{"id":892218,"date":"2023-06-12T09:57:05","date_gmt":"2023-06-12T09:57:05","guid":{"rendered":"https:\/\/www.capgemini.com\/pl-pl\/?page_id=892218"},"modified":"2025-12-05T13:57:09","modified_gmt":"2025-12-05T13:57:09","slug":"techchatter-odcinek-9-w-obronie-pythona","status":"publish","type":"page","link":"https:\/\/www.capgemini.com\/pl-pl\/kariera\/twoja-kariera\/role-eksperckie-menedzerskie\/podcast-techchatter\/sezon2-odcinek9\/","title":{"rendered":"TechChatter odcinek 9. W obronie Pythona"},"content":{"rendered":"\n<div class=\"wp-block-cg-blocks-hero-picture-card undefined  heroPictureCard\"><div class=\"heroPictureCardBgs\"><picture><source srcset=\"https:\/\/www.capgemini.com\/pl-pl\/wp-content\/uploads\/sites\/27\/2023\/06\/zdjecia-.png?w=2880&amp;quality=70 1x, https:\/\/www.capgemini.com\/pl-pl\/wp-content\/uploads\/sites\/27\/2023\/06\/zdjecia-.png?w=2880&amp;quality=70 2x\" media=\"(min-width: 1500px)\"\/><source srcset=\"https:\/\/www.capgemini.com\/pl-pl\/wp-content\/uploads\/sites\/27\/2023\/06\/zdjecia-.png?w=1440&amp;quality=70 1x, https:\/\/www.capgemini.com\/pl-pl\/wp-content\/uploads\/sites\/27\/2023\/06\/zdjecia-.png?w=2880&amp;quality=70 2x\" media=\"(min-width: 992px)\"\/><source srcset=\"https:\/\/www.capgemini.com\/pl-pl\/wp-content\/uploads\/sites\/27\/2023\/06\/zdjecia-.png?w=1024&amp;quality=70 1x, https:\/\/www.capgemini.com\/pl-pl\/wp-content\/uploads\/sites\/27\/2023\/06\/zdjecia-.png?w=1024&amp;quality=70 2x\" media=\"(min-width: 768px)\"\/><source srcset=\"https:\/\/www.capgemini.com\/pl-pl\/wp-content\/uploads\/sites\/27\/2023\/06\/zdjecia-.png?w=768&amp;quality=70 1x, https:\/\/www.capgemini.com\/pl-pl\/wp-content\/uploads\/sites\/27\/2023\/06\/zdjecia-.png?w=768&amp;quality=70 2x\" media=\"(min-width: 0)\"\/><img decoding=\"async\" src=\"https:\/\/www.capgemini.com\/pl-pl\/wp-content\/uploads\/sites\/27\/2023\/06\/zdjecia-.png\" class=\"desktopImage\" alt=\"\" style=\"object-fit:cover;object-position:50% 44%\" loading=\"eager\"\/><\/picture><picture><source srcset=\"https:\/\/www.capgemini.com\/pl-pl\/wp-content\/uploads\/sites\/27\/2023\/06\/zdjecia-.png?w=2880&amp;quality=70 1x, https:\/\/www.capgemini.com\/pl-pl\/wp-content\/uploads\/sites\/27\/2023\/06\/zdjecia-.png?w=2880&amp;quality=70 2x\" media=\"(min-width: 1500px)\"\/><source srcset=\"https:\/\/www.capgemini.com\/pl-pl\/wp-content\/uploads\/sites\/27\/2023\/06\/zdjecia-.png?w=1440&amp;quality=70 1x, https:\/\/www.capgemini.com\/pl-pl\/wp-content\/uploads\/sites\/27\/2023\/06\/zdjecia-.png?w=2880&amp;quality=70 2x\" media=\"(min-width: 992px)\"\/><source srcset=\"https:\/\/www.capgemini.com\/pl-pl\/wp-content\/uploads\/sites\/27\/2023\/06\/zdjecia-.png?w=1024&amp;quality=70 1x, https:\/\/www.capgemini.com\/pl-pl\/wp-content\/uploads\/sites\/27\/2023\/06\/zdjecia-.png?w=1024&amp;quality=70 2x\" media=\"(min-width: 768px)\"\/><source srcset=\"https:\/\/www.capgemini.com\/pl-pl\/wp-content\/uploads\/sites\/27\/2023\/06\/zdjecia-.png?w=768&amp;quality=70 1x, https:\/\/www.capgemini.com\/pl-pl\/wp-content\/uploads\/sites\/27\/2023\/06\/zdjecia-.png?w=768&amp;quality=70 2x\" media=\"(min-width: 0)\"\/><img decoding=\"async\" src=\"https:\/\/www.capgemini.com\/pl-pl\/wp-content\/uploads\/sites\/27\/2023\/06\/zdjecia-.png\" class=\"mobileImage\" alt=\"\" style=\"object-fit:cover;object-position:50% 44%\" loading=\"eager\"\/><\/picture><\/div><div class=\"heroPictureCardHeaderShape\"><\/div><div class=\"container\"><div class=\"row\"><div class=\"col-md-8 col-lg-6\"><div class=\"heroPictureCardBox\"><div class=\"heroPictureCardBoxTitle\"><h1 data-maxlength=\"144\">Podcast TechChatter<br>Odcinek 9<\/h1><\/div><\/div><\/div><\/div><\/div><div class=\"small-device\"><div class=\"brandLogoWrapper\"> <\/div><\/div><\/div>\n\n\n\n<section class=\"wp-block-cg-blocks-group undefined section section--article-content\"><div class=\"article-main-content\"><div class=\"container\"><div class=\"row\"><div class=\"col-12 col-md-11 col-lg-10 offset-md-1 offset-lg-1\"><div class=\"article-text article-quote-text\">\n<h2 class=\"wp-block-heading\" id=\"h-techchatter-odcinek-9-w-obronie-pythona\">TechChatter Odcinek 9. W obronie Pythona!<\/h2>\n\n\n\n<p>M\u00f3wi si\u0119, \u017ce Python jest jednym z najprostszych do nauki j\u0119zyk\u00f3w, a jego zastosowanie jest uniwersalne. W Pythonie mo\u017cna programowa\u0107 zar\u00f3wno proste skrypty, jak i z\u0142o\u017cone \u015brodowiska machine learning. Python posiada te\u017c sporo bibliotek, z kt\u00f3rych mo\u017cna bardzo \u0142atwo skorzysta\u0107, wi\u0119c programista ju\u017c od pierwszych minut pracy z tym j\u0119zykiem ma pod r\u0119k\u0105 ogrom mo\u017cliwo\u015bci i rozwi\u0105za\u0144.<\/p>\n\n\n\n<p>Jednak z drugiej strony do ka\u017cdej kluczowej cechy Pythona mo\u017cna te\u017c do\u0142o\u017cy\u0107 jaki\u015b zarzut, a przy ka\u017cdej zalecie doda\u0107 \u201cale\u201d.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Zapraszamy do s\u0142uchania!<\/h4>\n\n\n\n<figure class=\"wp-block-embed is-type-rich is-provider-spotify wp-block-embed-spotify wp-embed-aspect-21-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"Spotify Embed: W obronie Pythona\" style=\"border-radius: 12px\" width=\"100%\" height=\"152\" frameborder=\"0\" allowfullscreen allow=\"autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture\" loading=\"lazy\" src=\"https:\/\/open.spotify.com\/embed\/episode\/4hkcCFApIOK8bYQfpOWuLZ?utm_source=oembed\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button is-style-outline is-style-outline--1\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/open.spotify.com\/episode\/4hkcCFApIOK8bYQfpOWuLZ\" target=\"_blank\" rel=\"noreferrer noopener\">Spotify<\/a><\/div>\n\n\n\n<div class=\"wp-block-button is-style-outline is-style-outline--2\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/podcasts.apple.com\/pl\/podcast\/w-obronie-pythona\/id1599140666?i=1000617086684\" target=\"_blank\" rel=\"noreferrer noopener\">Apple Podcast <\/a><\/div>\n<\/div>\n\n\n\n<div style=\"height:29px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button is-style-outline is-style-outline--3\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/www.capgemini.com\/pl-pl\/wp-content\/uploads\/sites\/27\/2023\/06\/TechChatter2-Capgemini-S02E09-v3.0.mp3\" target=\"_blank\" rel=\"noreferrer noopener\">Pos\u0142uchaj w przegl\u0105darce <\/a><\/div>\n<\/div>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>W dzisiejszym odcinku Kacper i Rafa\u0142 wymieniaj\u0105 znalezione w sieci zarzuty w stron\u0119 Pythona i staraj\u0105 si\u0119 je zripostowa\u0107.<\/p>\n\n\n\n<p>Rozmawiaj\u0105 m.in. o:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>powolnym dzia\u0142aniu program\u00f3w<\/li>\n\n\n\n<li>du\u017cej konsumpcji pami\u0119ci<\/li>\n\n\n\n<li>braku r\u00f3\u017cnic mi\u0119dzy Pythonem 3, a Pythonem 2<\/li>\n\n\n\n<li>zarz\u0105dzaniu zale\u017cno\u015bciami<\/li>\n\n\n\n<li>braku multiplatformowo\u015bci<\/li>\n<\/ul>\n\n\n\n<p><strong>Eksperci<\/strong> <strong>Capgemini:<\/strong><\/p>\n\n\n\n<p><strong>Kacper Szmigiel <\/strong>&#8211; Programista z powo\u0142ania, z Pythonem ma do czynienia od sze\u015bciu lat. Poza prac\u0105 w Capgemini studiuje na drugim stopniu Informatyki na Politechnice \u0141\u00f3dzkiej, . W wolnych chwilach trenuje tr\u00f3jb\u00f3j si\u0142owy i sporty walki.<\/p>\n\n\n\n<p><strong>Rafa\u0142 Kukawski<\/strong> &#8211; Python developer, fanatyk FOSS, Linux i cyberbezpiecze\u0144stwa. Programuj\u0105c w pythonie tworzy g\u0142\u00f3wnie technologie internetowe i NLP.&nbsp;<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Wi\u0119cej o pracy w Capgemini:<\/strong><\/p>\n\n\n\n<p><a href=\"https:\/\/www.capgemini.com\/pl-pl\/kariera\/ \">https:\/\/www.capgemini.com\/pl-pl\/kariera\/ <\/a><\/p>\n\n\n\n<p><strong>Linki do materia\u0142\u00f3w wspomnianych w odcinku:<\/strong><\/p>\n\n\n\n<p><a href=\"https:\/\/www.pypy.org\/\">https:\/\/www.pypy.org\/<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/python\/cpython\">https:\/\/github.com\/python\/cpython<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/cython.org\/\">https:\/\/cython.org\/<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/docs.python.org\/3\/library\/gc.html\">https:\/\/docs.python.org\/3\/library\/gc.html<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/rushter.com\/blog\/python-garbage-collector\/\">https:\/\/rushter.com\/blog\/python-garbage-collector\/<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/man7.org\/linux\/man-pages\/man3\/malloc_trim.3.html\">https:\/\/man7.org\/linux\/man-pages\/man3\/malloc_trim.3.html<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/stackoverflow.com\/questions\/7857462\/dealing-with-fragmentation-in-a-memory-pool\">https:\/\/stackoverflow.com\/questions\/7857462\/dealing-with-fragmentation-in-a-memory-pool<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/virtualenv.pypa.io\/en\/latest\/\">https:\/\/virtualenv.pypa.io\/en\/latest\/<\/a><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>Je\u015bli odcinek Ci si\u0119 spodoba\u0142, daj nam o tym zna\u0107 wystawiaj\u0105c ocen\u0119 w Spotify lub Apple Podcasts.<\/p>\n\n\n\n<p>Podcast Capgemini Polska<\/p>\n\n\n\n<p>Produkcja: Cleverhearted Showrunners<\/p>\n\n\n\n<p><\/p>\n<\/div><\/div><\/div><\/div><\/div><\/section>\n\n\n\n<section class=\"wp-block-cg-blocks-how-we-do-it section section--howwedoit block-howwedoit\"><div class=\"container\"><div class=\"section-content\">\n<div class=\"wp-block-cg-blocks-card-howwedoit expanders\"><div class=\"box card-regulated-agreements card-howwedoit\"><div class=\"expander-box filter-box tag-active \"><div class=\"expander-title\" tabindex=\"0\" role=\"button\" aria-pressed=\"false\" aria-expanded=\"false\"><h3 class=\"expander-heading-title\">Transkrypcja <\/h3><\/div><div class=\"expander-content\"><p><br><strong>RAFA\u0141: <\/strong>Cze\u015b\u0107, jestem Rafa\u0142. W Capgemini pracuj\u0119 chyba od roku i tam przede wszystkim si\u0119 zajmuj\u0119 Pythonem, backend i ETL pipelines.\u00a0<br><strong>KACPER: <\/strong>Ja nazywam si\u0119 Kacper. W Capgemini pracuj\u0119 oko\u0142o p\u00f3\u0142 roku. Specjalizuj\u0119 si\u0119 we wszystkim w\u0142a\u015bciwie co zwi\u0105zane z Pythonem, ale w szczeg\u00f3lno\u015bci z technologiami backendowymi i bazami danych.\u00a0<br><strong>RAFA\u0141: <\/strong>Dobra, to mo\u017ce ja z g\u00f3ry chc\u0119 przeprosi\u0107 za kaleczenie polszczyzny. Postaram si\u0119, ale b\u0119dzie, b\u0119dzie czasami trudno zw\u0142aszcza z technicznymi jakimi\u015b s\u0142owami.\u00a0<br><strong>KACPER: <\/strong>Okej, dzisiaj chcieliby\u015bmy pogada\u0107 troch\u0119 na temat zwi\u0105zany z tym, dlaczego Python jest z\u0142y i dlaczego tak wielu ludzi na niego narzeka? I na ile te wszystkie zarzuty s\u0105 zasadne?<br><strong>RAFA\u0141: <\/strong>Zniszczymy hejter\u00f3w.\u00a0<br><strong>KACPER: <\/strong>Zniszczymy hejter\u00f3w. No, to si\u0119 jeszcze oka\u017ce, ale przynajmniej si\u0119 postaramy. Przygotowali\u015bmy sobie kilka zagadnie\u0144, kt\u00f3re najcz\u0119\u015bciej si\u0119 przewija\u0142y, gdy robili\u015bmy research do tego odcinka i chcieliby\u015bmy je wszystkie po kolei rozpracowa\u0107 i na ka\u017cdy z tych zarzut\u00f3w zaproponowa\u0107 chocia\u017c jedno rozwi\u0105zanie, kt\u00f3re pozwala obej\u015b\u0107 tutaj te trudno\u015bci, jakie narzuca niejako czasami Python. Mo\u017ce zacznijmy od tego, co przewija si\u0119 w sumie najcz\u0119\u015bciej, czyli tego, \u017ce Python jest powolny, czyli ma sporo ogranicze\u0144 zwi\u0105zanych z tym, jak szybko wykonuj\u0105 si\u0119 programy. Rafa\u0142, co o tym s\u0105dzisz?\u00a0<br><strong>RAFA\u0141: <\/strong>Co prawda tak, Python jest do\u015b\u0107 powolny i osobi\u015bcie te\u017c mia\u0142em kilka z tym problem\u00f3w. Za mn\u0105 w\u0142a\u015bnie chodzi serwer, co pracuje na 100-150 GB danych i rzeczywi\u015bcie troch\u0119 przymula. Robi\u0105c research do tego troch\u0119 wpad\u0142em w taki rabbit hole r\u00f3\u017cnych rozwi\u0105za\u0144. Z tego co widzia\u0142em, ja osobi\u015bcie zacz\u0105\u0142em u\u017cywa\u0107 PyPy, co jest 16 razy szybszy od zwyk\u0142ego Pythona. Dos\u0142ownie inny interpreter.\u00a0<br><strong>KACPER: <\/strong>Ale na jakiej zasadzie to jest? To jest po prostu inny interpreter?<br><strong>RAFA\u0141: <\/strong>To si\u0119 w\u0142a\u015bnie u\u017cywa just-in-time compiling. Z tym jest w\u0142a\u015bnie&#8230; Nie rozumiem, dlaczego dok\u0142adnie Python&#8230; Dlaczego to nie jest jakby priorytetem numer jeden Pythona, deweloper\u00f3w Pythona oficjalnych, bo tak wydaje mi si\u0119 to by\u0107 do\u015b\u0107 wa\u017cnym, ten just-in-time compiling. Ale w\u0142a\u015bnie dlatego s\u0105 alternatywy.\u00a0<br><strong>KACPER: <\/strong>Z jednej strony masz racj\u0119, ale z drugiej trzeba by si\u0119 by\u0142o zastanowi\u0107 na ile to, \u017ceby ten j\u0119zyk by\u0142 szybki, jest faktycznie jego celem i g\u0142\u00f3wnym za\u0142o\u017ceniem. No bo tutaj w\u0142a\u015bnie poruszymy kilka takich temat\u00f3w. Na przyk\u0142ad dynamic typing. Te\u017c mamy to tutaj wylistowane. W latach \u201890., gdy Guido Van Rossum projektowa\u0142 Pythona, no to ich za\u0142o\u017ceniem by\u0142o to, \u017ceby by\u0142 to j\u0119zyk typowany dynamicznie. I dlatego tego typowania po prostu, s\u0105 te\u017c narz\u0119dzia, kt\u00f3re pozwalaj\u0105 to oczywi\u015bcie obej\u015b\u0107 jak MyPy, kt\u00f3ry teraz ju\u017c obecnie jest oficjaln\u0105 cz\u0119\u015bci\u0105 j\u0119zyka, je\u015bli si\u0119 nie myl\u0119, przynajmniej jest hostowany na tym samym repo co Python, to akurat sprawdzi\u0142em. I sprawdza si\u0119 bardzo dobrze, wi\u0119c zale\u017cy czego tak naprawd\u0119 poszukujemy i co chcemy osi\u0105gn\u0105\u0107, tak? No bo je\u017celi potrzebujemy szybkiego j\u0119zyka, no to ju\u017c si\u0119gniemy po Rasta, po C, ewentualnie C++, Golang ostatnio jest bardzo popularny. To tak troch\u0119 jakby wiesz, kupi\u0107 Fiata Punto i narzeka\u0107, \u017ce jest wolny. No bo Fiat Punto z za\u0142o\u017cenia nie ma by\u0107 szybki, wi\u0119c it is what it is.\u00a0<br><strong>RAFA\u0141: <\/strong>Fajnie, \u017ce wspomnia\u0142e\u015b o tym dynamic typing. To by\u0142a zreszt\u0105 nast\u0119pna kwestia, \u017ce ludzie m\u00f3wi\u0105, \u017ce Python jest tylko dobry dla ma\u0142ych projekt\u00f3w, bo brakuje w\u0142a\u015bnie tego dynamic typing. Wspomnia\u0142e\u015b co\u015b o MyPy?\u00a0<br><strong>KACPER: <\/strong>Tak, jest to narz\u0119dzie, kt\u00f3re pozwala na dodanie statycznego, to jest statyczny type checker po prostu, pozwala na statyczn\u0105 kontrol\u0119 typ\u00f3w w Pythonie i on te\u017c nie jest idealnym rozwi\u0105zaniem, o czym sam si\u0119 przekona\u0142em.\u00a0<br><strong>RAFA\u0141: <\/strong>Tak?\u00a0<br><strong>KACPER: <\/strong>Tak. Przesz\u0142o nieca\u0142e trzy lata temu, bo w ramach takiego programu Google Summer of Code pracowa\u0142em nad dodaniem statycznej kontroli typ\u00f3w dla frameworka Django w\u0142a\u015bnie z u\u017cyciem MyPy i powodowa\u0142o to mn\u00f3stwo problem\u00f3w, w szczeg\u00f3lno\u015bci dla klasy generowanych gdzie\u015b tam dynamicznie w runtime. Natomiast nie jest to niemo\u017cliwe, przynajmniej do takich podstawowych zastosowa\u0144 jak\u0105\u015b tam kontrol\u0119 typ\u00f3w mo\u017cemy sobie doda\u0107. To czego mi brakuje osobi\u015bcie, to w\u0142a\u015bnie, wiesz, sprawdzanie tych typ\u00f3w runtime, czyli \u017ceby crashowa\u0142o na przyk\u0142ad w momencie, gdy funkcja dostanie niew\u0142a\u015bciwy typ czy co\u015b takiego. To by wiele upro\u015bci\u0142o z ca\u0142\u0105 pewno\u015bci\u0105, ale znowu wracamy do tego, \u017ce to nie od tego jest Python w zasadzie. No nie?<br><strong>RAFA\u0141: <\/strong>Ale jednak jest te\u017c Cython i CPython praktycznie, je\u015bli to dobrze rozumiem. Dopiero tak troch\u0119 si\u0119 z tym bawi\u0142em, bo do tej pory nie musia\u0142em, ale to jest pass-through do C i w\u0142a\u015bnie to definiowanie typ\u00f3w i wtedy si\u0119 tym obchodzisz jak w C zamiast jak w Pythonie. To zreszt\u0105 spoko, podoba mi si\u0119 pomys\u0142.\u00a0<br><strong>KACPER: <\/strong>Ja tutaj przyznaj\u0119 si\u0119 bez bicia, \u017ce nigdy nie mia\u0142em z tym do czynienia tak bezpo\u015brednio.\u00a0<br><strong>RAFA\u0141: <\/strong>No w\u0142a\u015bnie tak jak patrzy\u0142em, jak sprawdza\u0142em w Ogam Connectors i takich tam to w\u0142a\u015bnie tak si\u0119 wpad\u0142em do rabbit hole z CPython i Cython. Fajny patent, na bank b\u0119d\u0119 chyba dalej b\u0119d\u0119 z tego. Mo\u017ce w og\u00f3le si\u0119 przeskocz\u0119 na Cython i CPython dla prywatnych projekt\u00f3w.\u00a0<br><strong>KACPER: <\/strong>Spoko, brzmi dobrze. Je\u015bli chodzi o w\u0142a\u015bnie, bo poruszy\u0142e\u015b te\u017c kwesti\u0119 tego, \u017ce Python rzekomo nie nadaje si\u0119 do du\u017cych projekt\u00f3w, w\u0142a\u015bnie przez dynamiczne typowanie i tutaj rozwi\u0105zanie jest moim zdaniem do\u015b\u0107 proste, mianowicie pokrycie kodu testami w taki spos\u00f3b, \u017ceby przy jakimkolwiek wi\u0119kszym refaktorze po prostu wszystko nie zacz\u0119\u0142o si\u0119 sypa\u0107 i \u017ceby\u015bmy dalej mieli do\u015b\u0107 sprawnie dzia\u0142aj\u0105cy kod bez \u017cadnych tam kolizji zwi\u0105zanych w\u0142a\u015bnie z typami. Wi\u0119c tutaj pisanie test\u00f3w jest wymogiem.<br><strong>RAFA\u0141: <\/strong>W\u0142a\u015bnie chcia\u0142em powiedzie\u0107, jedyny problem z tym jest pisanie test\u00f3w. I kto ma na to czas i komu si\u0119 chce. Mi nie, nie wiem jak Tobie.\u00a0<br><strong>KACPER: <\/strong>To jest akurat kwestia tego, w jakim projekcie pracujesz, bo s\u0105 projekty faktycznie przynajmniej takie, na kt\u00f3rych ostatnio w Capgemini mia\u0142em okazj\u0119 pracowa\u0107, \u017ce ten czas na testy faktycznie jest. I ten test coverage jest na poziomie 80-90% i jest to bardzo dobry wynik bior\u0105c pod uwag\u0119 to, jak du\u017ce s\u0105 tu projekty. Tak\u017ce da si\u0119, da si\u0119, i nie jest \u0142atwo, ale nie jest to niemo\u017cliwe. Dobra, a tutaj patrz\u0119 sobie na t\u0105 list\u0119 rzeczy, kt\u00f3re&#8230;\u00a0<br><strong>RAFA\u0141: <\/strong>Szczerze? Jedno co mnie w\u0142a\u015bnie strasznie kr\u0119ci\u0142o, to to o co chodzi z tym global and capital log i multithreading. Troch\u0119 te\u017c sam w to wpad\u0142em przez ten memory usage. Ty co o tym wiesz? Jak to obej\u015b\u0107 i jak do tego podej\u015b\u0107 najlepiej?\u00a0<br><strong>KACPER: <\/strong>Obchodzi si\u0119 to bardzo prosto. To prosto zamiast tworzy\u0107 programy wielow\u0105tkowe, to zaczyna si\u0119 pisa\u0107, wiesz, multi procesowo. Czyli zamiast korzysta\u0107 z w\u0105tk\u00f3w, to korzystamy z osobnych proces\u00f3w i na to sobie rozbijamy nasze programy. Global interpreter log, no okej, on jest upierdliwy i poniek\u0105d sprawia, \u017ce ten multithreading w Pythonie nie istnieje. Jest bezu\u017cyteczny. Natomiast mamy lipk\u0119 w bibliotece standardowej, pakiet multiprocessing, kt\u00f3ry jest banalny w obs\u0142udze w mojej ocenie i sprawdza si\u0119 bardzo dobrze.<br><strong>RAFA\u0141: <\/strong>Jak si\u0119 nazywa?\u00a0<br><strong>KACPER: <\/strong>Multiprocessing.\u00a0<br><strong>RAFA\u0141: <\/strong>A, Multiprocessing, okej.\u00a0<br><strong>KACPER: <\/strong>Tak, tak i tam wiesz, rozbicie sobie programu na, jakich\u015b tam bardziej z\u0142o\u017conych operacji, na kilka proces\u00f3w po prostu nie stanowi du\u017cego wyzwania, je\u017celi wiemy co robimy. Nie wiem, na ile ten multithreading to jest takie faktyczne issue. To jest po prostu co\u015b za co\u015b, no nie, a niekoniecznie jest to jaki\u015b ogromny bloker. Poza tym te\u017c tego akurat bardzo nie zg\u0142\u0119bia\u0142em, nie mia\u0142em okazji, ale wiem te\u017c, \u017ce w Pythonie przecie\u017c mamy ca\u0142y mechanizm do realizacji, wiesz, async await, no nie? I tam sobie deklarujemy nasze tam core routines i rzeczy po prostu dziej\u0105 si\u0119 asynchronicznie. I je\u017celi mamy jakie\u015b tam oprogramowanie zale\u017cne od jakich\u015b third parties, czyli musimy poczeka\u0107 a\u017c co\u015b si\u0119 wydarzy, no to czemu mieliby\u015bmy z tego nie skorzysta\u0107, je\u017celi ju\u017c tak bardzo nam zale\u017cy na tym, \u017ceby nasz program sk\u0142ada\u0142 si\u0119 z jednego procesu i z jakiego\u015b powodu nie chcemy tego multiprocessing u\u017cywa\u0107. Kolejny zarzut, z jakim tutaj spotkali\u015bmy si\u0119, przygotowuj\u0105c si\u0119 do odcinka, to konsumpcja pami\u0119ci.<br><strong>RAFA\u0141: <\/strong>Mam dwie odpowiedzi praktycznie, kr\u00f3tk\u0105 i d\u0142ug\u0105. Kr\u00f3tka, jak ci matka przychodzi do pokoju sprz\u0105ta\u0107 i ty nie masz prawa potem narzeka\u0107, \u017ce \u017ale sprz\u0105tni\u0119te. Pierwsza to, mo\u017cna zawsze po prostu delete variable i wywo\u0142a\u0107 funkcj\u0119 collect na obiekcie i masz sprz\u0105tni\u0119te, masz tak sprz\u0105tni\u0119te jak chcesz. Garbage Collector oczywi\u015bcie nie jest idealny i s\u0105 oczywi\u015bcie problemy z fragmentacj\u0105 i zwalnianiem pami\u0119ci z powrotem do systemu. I szczerze jak czyta\u0142em o tym, to wpad\u0142em w taki rabbit hole, \u017ce siedzia\u0142em wczoraj do trzeciej. Czasami si\u0119 wkr\u0119cam w najdziwniejsze rzeczy. Ten Garbage Collector zosta\u0142 wprowadzony w wersji Pythona 2 i rzeczywi\u015bcie tam s\u0105 jakie\u015b takie dziwne sytuacje, gdzie si\u0119 fragmentuje pami\u0119\u0107 i Python jakby nie oddaje ca\u0142ej pami\u0119ci, co powinien odda\u0107. Rzeczywi\u015bcie jest taki problem, ale znowu ta sama sprawa. Oczywi\u015bcie mo\u017cna zawsze dosta\u0107 pointer od Garbage Collector i samemu wyczy\u015bci\u0107 pami\u0119\u0107 tak jak chcesz, tak jak by\u015b to robi\u0142 w C. Osobi\u015bcie tego nie robi\u0142em nigdy, nie musia\u0142em tego robi\u0107, ale teoretycznie jest to mo\u017cliwe.\u00a0<br><strong>KACPER: <\/strong>Wiesz co? Ja te\u017c troch\u0119 wczoraj zg\u0142\u0119bia\u0142em ten temat przygotowuj\u0105c si\u0119 do odcinka. Trafi\u0142em na co\u015b takiego, bo w sumie wszystko w Pythonie jest obiektem, no nie? I taka jest definicja tego, jak Python to object-oriented programming realizuje.\u00a0<br><strong>RAFA\u0141: <\/strong>Tak, i ten Garbage Collector zbiera obiekty, kt\u00f3re ju\u017c nie s\u0105 dost\u0119pne. To robi cyklicznie co ile\u015b tam, clock sekund, czy co\u015b.<br><strong>KACPER: <\/strong>Tak, ale co z tego wynika to to, \u017ce nawet zmienna typu int poniek\u0105d r\u00f3wnie\u017c jest obiektem. I tak jak w Golang, int w zale\u017cno\u015bci od tego o jakim incie m\u00f3wimy, bo int, intowi nier\u00f3wny, ale ma zazwyczaj gdzie\u015b 4 bajty. To wiesz, jak sprawdzi\u0142em sobie w Pythonie, to ma 24. To jest 6-krotnie wi\u0119cej, wi\u0119c tutaj to jest obra\u017canie si\u0119 na Pythona za to, \u017ce jest w Pythonem, \u017ce zajmuje du\u017co pami\u0119ci. No zajmuje, bo tak jest skonstruowany i tak jest w sumie jego za\u0142o\u017cenia. Oczywi\u015bcie mo\u017cna by by\u0142o tutaj narzeka\u0107 na ten Garbage Collector, ale z tego co mi wiadomo na ten moment, to te\u017c nie jest to w og\u00f3le issue dlatego core teamu, kt\u00f3ry rozwija Pythona i go tworzy. Jest to te\u017c chyba, wydaje mi si\u0119, podyktowane wzgl\u0119dami praktycznymi, poniewa\u017c czas programisty jest znacznie dro\u017cszy ni\u017c sprz\u0119t obecnie. Wi\u0119c o wiele bardziej op\u0142aca si\u0119 i tak skorzysta\u0107 z j\u0119zyka, kt\u00f3ry b\u0119dzie prosty w obs\u0142udze i po prostu b\u0119dzie \u0142atwo i szybko mo\u017cna stworzy\u0107 oprogramowanie i je utrzymywa\u0107 potem i w\u0142a\u015bnie dokupi\u0107 RAM-u, ni\u017c korzysta\u0107 z jakich\u015b edge&#8217;owych rozwi\u0105za\u0144, kt\u00f3re okej b\u0119d\u0105 wydajne, oczywi\u015bcie mo\u017cna pisa\u0107 wszystko w C, tylko po co? Je\u017celi sprinty wtedy by nie trwa\u0142y 2 tygodnie, tylko 2 miesi\u0105ce. \u017beby zrobi\u0107 cokolwiek.\u00a0<br><strong>RAFA\u0141: <\/strong>Racja, a \u017ceby do tego te\u017c do\u0142o\u017cy\u0107, PyPy jest du\u017co bardziej eficjentny w pami\u0119ci te\u017c. Du\u017co, du\u017co bardziej eficjentny. W og\u00f3le te 150 GB na moim komputerze dos\u0142ownie zbudowanych ze \u015bmieci, nie przesadzam, normalnie chodzi na PyPy, bo na Pythonie by mi chodzi\u0142o. Zawiesi\u0142 si\u0119 po prostu komputer, bo nie starczy\u0142o pami\u0119ci, wszystko zjada\u0142 i&#8230; Ale PyPy chodzi, wi\u0119c mam 4 GB RAM-u.<br><strong>KACPER: <\/strong>To tyle co m\u00f3j telefon.\u00a0<br><strong>RAFA\u0141: <\/strong>I na tym serwer prowadzam, wi\u0119c da si\u0119, da si\u0119. [\u015bmiech]<br><strong>KACPER: <\/strong>To mo\u017ce przejd\u017amy sobie troch\u0119 dalej. Dla mnie temat w og\u00f3le ezoteryczny, Python 2 i narzekanie na to, \u017ce Python 3 od Python 2 si\u0119, bardzo, \u017ce w\u0142a\u015bnie niewiele si\u0119 r\u00f3\u017cni, bo na pocz\u0105tku to by\u0142y w og\u00f3le takie g\u0142osy, \u017ce jedyna r\u00f3\u017cnica to by\u0142o zrobienie z printa funkcji zamiast instrukcji, tak jak by\u0142o w Pythonie 2.<br><strong>RAFA\u0141: <\/strong>No, nie, nie, s\u0105 jakie\u015b r\u00f3\u017cnice.\u00a0<br><strong>KACPER: <\/strong>No, oczywi\u015bcie, \u017ce s\u0105, tylko m\u00f3g\u0142by\u015b o tym troch\u0119 wi\u0119cej jeszcze opowiedzie\u0107.\u00a0<br><strong>RAFA\u0141: <\/strong>Szczerze, by\u0142 troch\u0119 chaos z migracj\u0105 z Pythona 2 do 3. Wystarczaj\u0105co by\u0142 chaos\u00f3w z migracji z Pythona 2 do 3, \u017ce nie pami\u0119tam, jaka by\u0142a dystrybucja. Chyba Ubuntu si\u0119 kompletnie wycofa\u0142 z u\u017cywania Pythona, \u017ce ju\u017c [niezrozumia\u0142e 00:14:21] nie publikowali Ubuntu chyba z Pythonem 2 zainstalowanym nie pami\u0119tam. Ale by\u0142, jest troch\u0119 chaos, jest troch\u0119 rzeczywi\u015bcie takiego, trzeba si\u0119 zacz\u0105\u0107 tym bawi\u0107, ale jednak jest bardzo \u0142atwe rozwi\u0105zanie, s\u0105 dwa pakiety, si\u0119 nazywa PyEnv i VirtualEnv. Mi si\u0119 wydaje, \u017ce VirtualEnv i tak powinien by\u0107 stackiem, co si\u0119 u\u017cywa przez ca\u0142y czas do programowania, nawet jak jest pocz\u0105tkuj\u0105cym i nawet coraz wi\u0119cej wida\u0107 w takich tutorialach dla pocz\u0105tkuj\u0105cych VirtualEnv.\u00a0<br><strong>KACPER: <\/strong>Wiem, konteneryzacja obecnie ju\u017c, wiesz, Docker jest na tyle prosty w obs\u0142udze, \u017ce wrzucenie czego\u015b do kontenera nie jest jest to rapid science.\u00a0<br><strong>RAFA\u0141: <\/strong>Tak, ale mi si\u0119 wydaje, \u017ce VirtualEnv jest ma\u0142y, it&#8217;s not bloated. Docker to ju\u017c tak \u015bci\u0105gasz ca\u0142y system operacyjny, \u017ceby&#8230;\u00a0<br><strong>KACPER: <\/strong>W\u0142a\u015bnie, nie. Z Kernela dalej korzystasz z hosta.\u00a0<br><strong>RAFA\u0141: <\/strong>No tak, ale jest wci\u0105\u017c wi\u0119cej danych, jest wi\u0119cej bloat, jest wi\u0119kszy overhead. Je\u015bli ci ju\u017c przeszkadza overhead w Pythonie, to dlaczego ci nie przeszkadza overhead w Dockerze. Zw\u0142aszcza na takim serwerze ze \u015bmieci odczuwa\u0107 r\u00f3\u017cnice, tak rzeczywi\u015bcie odczu\u0107, da si\u0119 odczu\u0107 r\u00f3\u017cnice, czy u\u017cywasz VirtualEnv czy Docker, jest powa\u017cna r\u00f3\u017cnica. M\u00f3wimy tutaj o 2-3 sekundy wolniej.\u00a0<br><strong>KACPER: <\/strong>To jest dobry argument.\u00a0<br><strong>RAFA\u0141: <\/strong>Ale VirtualEnv jest idealne. Zw\u0142aszcza jak zacznie si\u0119 tak troch\u0119 p\u0142ynniej korzysta\u0107 z terminalu, to nie widz\u0119, jak to po polsku, downside. I je\u015bli do tego do\u0142o\u017cymy PyEnv, to w og\u00f3le nie widz\u0119 problemu. Si\u0119 instaluje po prostu wersja tak\u0105, jak\u0105 chcesz i gotowe. It just works.\u00a0<br><strong>KACPER: <\/strong>No spoko, ale widzisz, st\u0105d mo\u017cna przej\u015b\u0107 \u0142atwo do zarz\u0105dzania zale\u017cno\u015bciami w Pythonie. W og\u00f3le o tym wczoraj pomy\u015bla\u0142em, \u017ce ile razy mia\u0142em jak\u0105\u015b sytuacj\u0119, \u017ce w\u0142a\u015bnie nie korzysta\u0142em z VirtualEnv i instalowa\u0142em jak\u0105\u015b tam now\u0105 paczk\u0119. I wiesz, i ca\u0142a reszta mi si\u0119 sypa\u0142a z tego wzgl\u0119du, \u017ce jak masz w zale\u017cno\u015bciach swojego programu jak\u0105\u015b paczk\u0119 w jakiej\u015b wersji, nie wiem, CO PG2 na przyk\u0142ad, kt\u00f3re dotychczas chyba najwi\u0119cej problem\u00f3w mi sprawia\u0142o pod tym k\u0105tem i masz w swoich zale\u017cno\u015bciach inn\u0105 paczk\u0119, kt\u00f3ra r\u00f3wnie\u017c ma w swoich zale\u017cno\u015bciach t\u0119 sam\u0105 paczk\u0119 co ty, ale inn\u0105 wersj\u0119, to w momencie, gdy to b\u0119dziesz pipe instalowa\u0142, to to po prostu zostanie nadpisane. I st\u0105d wynika niejako ta konieczno\u015b\u0107 korzystania z VirtualEnv, ale one te\u017c nie rozwi\u0105zuj\u0105 tych wszystkich problem\u00f3w, bo ta paczka i tak ostatecznie zostanie nadpisana. To jest powa\u017cny zarzut moim zdaniem. I to jest ci\u0119\u017cko wybroni\u0107.\u00a0<br><strong>RAFA\u0141: <\/strong>Zgadzam si\u0119.<br><strong>KACPER: <\/strong>O wiele lepiej wydaje mi si\u0119, \u017ce w Node jest to rozwi\u0105zane, gdzie wszystko jest instalowane lokalnie. Nie wiem, jak tam konflikty s\u0105 rozwi\u0105zywane. Nie pracuj\u0119 z tym na co dzie\u0144. Ale wydaje mi si\u0119 to o wiele bardziej rozs\u0105dne i instalowanie rzeczy lokalnie by default w folderze projektu, czy to memiczne Node_modules, kt\u00f3re zajmuje p\u00f3\u0142 dysku. Tak, to faktycznie zajmuje p\u00f3\u0142 dysku i instaluje si\u0119 nierzadko kilkana\u015bcie minut, ale dzia\u0142a, tak? I dzia\u0142a tak jak powinno i o wiele lepiej spe\u0142nia oczekiwania, wydaje mi si\u0119, ni\u017c to co niestety mamy w Pythonie. C\u00f3\u017c nie wszystko da si\u0119 chyba wykona\u0107.<br><strong>RAFA\u0141: <\/strong>No szczerze te\u017c nie mam idealnej odpowiedzi na to. Ale mo\u017ce jednak jest jakie\u015b rozwi\u0105zanie, \u017ceby mie\u0107 kilka VirtualEnvi w jaki\u015b momencie&#8230; Nie wiem, nie ma dobrego rozwi\u0105zania.\u00a0<br><strong>KACPER: <\/strong>No ale to i tak nie jest rozwi\u0105zanie, tylko hakowanie tego.<br><strong>RAFA\u0141: <\/strong>Potato potato. Jeden to nazywa hakowanie, inny to nazywa rozwi\u0105zanie. Nie wa\u017cne.\u00a0<br><strong>KACPER: <\/strong>Okej. No i multiplatformowo\u015b\u0107 i te wszystkie zarzuty zwi\u0105zane z tym, \u017ce nie wszystkie pakiety dzia\u0142aj\u0105 tak, jak powinny na wszystkich systemach chocia\u017cby. Tkinter jest takim przyk\u0142adem, kt\u00f3ry zreszt\u0105 omawiali\u015bmy sobie. To, \u017ce on dzia\u0142a dobrze bodaj\u017ce na Windowsie i na pewno na Macu, bo mia\u0142em w ramach studi\u00f3w w\u0105tpliw\u0105 przyjemno\u015b\u0107 korzysta\u0107 z tego pakietu w jednym z projekt\u00f3w i wiesz na Macu to dzia\u0142a\u0142o dobrze, z tego co wiem, na Windowsie te\u017c.\u00a0<br><strong>RAFA\u0141: <\/strong>Na Linuxie ju\u017c nie dzia\u0142a.<br><strong>KACPER: <\/strong>Natomiast nie dzia\u0142a na Linuxie. No w\u0142a\u015bnie. Ale pytanie, na ile to jest problem te\u017c zwi\u0105zany z samym Pythonem per se, a na ile po prostu z ekosystemem. Bo tutaj nale\u017ca\u0142oby wymaga\u0107 tak naprawd\u0119 od ludzi, kt\u00f3rzy tworz\u0105 to wszystko wok\u00f3\u0142 ca\u0142ego Pythona, wok\u00f3\u0142 tego core&#8217;u, \u017ceby testowali wszystko na wszystkich mo\u017cliwych platformach. No a na ile to jest realne, no s\u0105dz\u0119, \u017ce nie bardzo. A na ile to jest w takim razie zarzut w stron\u0119 Pythona? No bardziej zarzut w stron\u0119 ekosystemu Pythona, ni\u017c je\u017celi samego j\u0119zyka.\u00a0<br><strong>RAFA\u0141: <\/strong>M\u00f3wimy tu o samym j\u0119zyku. W og\u00f3le jeszcze to przegapili\u015bmy. Funkcje dunder i potrzebna memoryzacja podstawowych randomly defined variable names, that you just have to memorize. Niekt\u00f3rzy ludzie m\u00f3wi\u0105, \u017ce to jest podstawowa problem z Pythonem, \u017ce tego jest niepotrzebnie du\u017co. Co Ty my\u015blisz?\u00a0<br><strong>KACPER: <\/strong>No okej s\u0105, ale w jakim j\u0119zyku ich nie ma. I pytanie na ile jest to w og\u00f3le problem i ilu z nich si\u0119 tak naprawd\u0119 korzysta. Przy dzisiejszych ID, z kt\u00f3rych tam mo\u017cna sobie te\u017c korzysta\u0107 i podejrze\u0107 docstringi po prostu naje\u017cd\u017caj\u0105c na nazw\u0119 funkcji i zobaczy\u0107 co si\u0119 w niej dzieje i po prostu nie musie\u0107 grzeba\u0107 w dokumentacji. To nie wa\u017cne, czy ich b\u0119dzie 69 czy 690, to dalej nie b\u0119dzie to jaki\u015b ogromny problem. S\u0105 te\u017c magic methods, czyli te, kt\u00f3re Double underscorze tworzy, z kt\u00f3rych korzystaj\u0105 wszystkie obiekty. Mamy te inity, r\u00f3\u017cne dele chyba, konstruktory, dekonstruktory i tak dalej. Zastanawiam si\u0119, na ile to jest w og\u00f3le zarzut. W sensie no s\u0105, no i co, i z ilu z nich faktycznie si\u0119 korzysta. Nie spotka\u0142em si\u0119 jeszcze z sytuacj\u0105, gdzie wymienienie dos\u0142ownie pi\u0119ciu na rozmowie rekrutacyjnej by\u0142oby niewystarczaj\u0105ce. W praktyce i tak, s\u0105dz\u0119, \u017ce warto wiedzie\u0107, \u017ce w og\u00f3le istniej\u0105, ale czy trzeba pami\u0119ta\u0107, \u017ce wiesz, jak dzia\u0142a ka\u017cda z nich, co dok\u0142adnie robi.\u00a0<br><strong>RAFA\u0141: <\/strong>No Init trzeba wiedzie\u0107 na bank, Init to na bank.<br><strong>KACPER: <\/strong>No tak to zdecydowanie, ale ca\u0142\u0105 reszt\u0119 ewentualnie mo\u017cna podejrze\u0107 w dokumentacji. Jeszcze wracaj\u0105c do Top Level Functions, to to co chcia\u0142em napomkn\u0105\u0107, to istnieje taki j\u0119zyk programowania, \u015bwietny jak PHP. Defaultowo wszystko je\u015bli si\u0119 nie myl\u0119, oczywi\u015bcie dawno w nim nie pracowa\u0142em bardzo. Mo\u017ce co\u015b si\u0119 zmieni\u0142o w tej ostatniej chyba si\u00f3dmej wersji, tak? Wiesz, kiedy\u015b w tym pracowa\u0142em, bo by\u0142em m\u0142ody i potrzebowa\u0142em pieni\u0119dzy.<br><strong>RAFA\u0141: <\/strong>I was young and I was stupid and desperate. I did horrible things.\u00a0<br><strong>KACPER: <\/strong>W ka\u017cdym razie tam defaultowo chyba wszystkie funkcje, kt\u00f3re sobie definiujemy, one trafiaj\u0105 do tych Top Level Functions tak i s\u0105 dost\u0119pne z ka\u017cdego miejsca w skrypcie, je\u017celi si\u0119 tutaj nie myl\u0119. Mo\u017cliwe, \u017ce m\u00f3wi\u0119 tutaj co\u015b bardzo naiwnego. Ale wiesz, je\u017celi mamy do czynienia z czym\u015b takim i tak jest to szeroko u\u017cywany dalej j\u0119zyk programowania, to tutaj te 60 kilka funkcji, z kt\u00f3rymi mamy do czynienia w Pythonie, to naprawd\u0119 nie jest du\u017co i nie powinno to stanowi\u0107 problemu.\u00a0<br><strong>RAFA\u0141: <\/strong>A m\u00f3wi\u0105c o r\u00f3\u017cnych opcjach, u\u017cywasz taby czy spacje?<br><strong>KACPER: <\/strong>Taby for life.\u00a0<br><strong>RAFA\u0141: <\/strong>Yes. Fuck loading exiles, tab, no spaces. [\u015bmiech]<br><strong>KACPER: <\/strong>I w\u0142a\u015bnie tutaj te\u017c kolejny zarzut odno\u015bnie samej sk\u0142adni to to, \u017ce te identy s\u0105 wymuszone.<br><strong>RAFA\u0141: <\/strong>Szczerze, ja du\u017co bardziej wol\u0119 identy ni\u017c curly braces.\u00a0<br><strong>KACPER: <\/strong>Ja tak samo.\u00a0<br><strong>RAFA\u0141: <\/strong>JavaScript mnie po prostu zabija. Jak po prostu si\u0119 jako\u015b nie domkn\u0119 jednego curly braces, bo na samym dole mam 3000 tych curly braces i nie wiadomo co si\u0119 dziej\u0119. Wol\u0119 Python, to jest takie pi\u0119kne. To tyle lepsze.\u00a0<br><strong>KACPER: <\/strong>Tak, to jest po pierwsze czytelniejsze, a po drugie wiesz ostatecznie i tak wszyscy korzystaj\u0105 z ident\u00f3w, niezale\u017cnie od tego w jakim j\u0119zyku pisz\u0105.\u00a0<br><strong>RAFA\u0141: <\/strong>Najgorsze co si\u0119 mo\u017ce sta\u0107, \u017ce po prostu we&#8217;ve noticed inconsistent use of tabs and spaces. I to po prostu na przyk\u0142ad w ci\u0105gu 5 minut jest gotowe. Tak absolutnie.\u00a0<br><strong>KACPER: <\/strong>Poniek\u0105d racja. My\u015bl\u0119, \u017ce powoli b\u0119dziemy ko\u0144czy\u0107.\u00a0<br><strong>RAFA\u0141: <\/strong>Musz\u0119 jeszcze jedn\u0105 rzecz. Tak sobie my\u015bl\u0119. Mo\u017ce by\u0107 te\u017c interesuj\u0105cy dla innych ludzi. Jak sobie radzisz ze syndromem impostora? Tak z ciekawo\u015bci.\u00a0<br><strong>KACPER: <\/strong>Jak ja sobie radz\u0119? Ja sobie nie radz\u0119 zupe\u0142nie. Nawet nie pr\u00f3buj\u0119. W zesz\u0142ym tygodniu, dok\u0142adnie tydzie\u0144 temu, obroni\u0142em prac\u0119 in\u017cyniersk\u0105 i pokaza\u0142a mi ona, jak wiele jeszcze nie wiem w og\u00f3le na temat dziedziny, kt\u00f3r\u0105 si\u0119 zajmuj\u0119 poniek\u0105d od 10 lat. Wi\u0119c nie, nawet sobie nie pr\u00f3buj\u0119 z tym radzi\u0107. O wiele bardziej tutaj raczej kwestie jakiego\u015b wypalenia s\u0105 dla mnie istotne i \u017ceby czasem porobi\u0107 co\u015b innego, pouczy\u0107 si\u0119 czego\u015b innego, popracowa\u0107 w innej technologii i dalej mie\u0107 jakby fun z tej pracy. Wiesz to, \u017ce b\u0119dzie mi si\u0119 wydawa\u0142o, \u017ce wiem, \u017ce nic nie wiem, no to c\u00f3\u017c it is what it is.\u00a0<br><strong>RAFA\u0141: <\/strong>The same. Nie mam zreszt\u0105 lepszego rozwi\u0105zania ni\u017c chodzenie biega\u0107. Zdarza si\u0119, \u017ce potrzebuj\u0119 po prostu przerwy w \u015brodku dnia, \u017ceby p\u00f3j\u015b\u0107 biega\u0107, bo je\u015bli nie to mi si\u0119 po prostu robi m\u0119tlik w g\u0142owie. Tak samo.\u00a0<br><strong>KACPER: <\/strong>Dobra, no to s\u0105dz\u0119, \u017ce to by by\u0142o na tyle. Dzi\u0119kujemy Wam bardzo za wys\u0142uchanie naszego podcastu i do zobaczenia w nast\u0119pnych odcinkach.\u00a0<br><strong>RAFA\u0141: <\/strong>Dzi\u0119kuj\u0119 za s\u0142uchanie podcastu i zapraszamy.\u00a0<br><strong>KACPER: <\/strong>Je\u017celi temat Was zainteresowa\u0142 i chcieliby\u015bcie dalej go zg\u0142\u0119bia\u0107, to zajrzyjcie do opisu odcinka, w kt\u00f3rym znajdziecie linki do materia\u0142\u00f3w, z kt\u00f3rych korzystali\u015bmy, przygotowuj\u0105c si\u0119 do niego.\u00a0<br><br><\/p><div class=\"bg-color video-align-right\"><div class=\"container\"><div class=\"row video-align-left\"><div class=\"col-md-12\"><div class=\"video-align-left row box box--4 box--mini\"><div class=\"col-md-3\"><\/div><div class=\"col-md-8 box-img-wrapper\"><div class=\"video-box\"><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"content-more\"><\/div><\/div><\/div><\/div><\/div>\n<\/div><\/div><\/section>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":413,"featured_media":0,"parent":700947,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"cg_dt_proposed_to":[],"cg_seo_hreflang_relations":"[]","cg_seo_canonical_relation":"","cg_seo_hreflang_x_default_relation":"{\"uuid\":\"4d68f092-6417-4c7b-9504-0ef6a14cabb9\",\"blogId\":\"\",\"domain\":\"\",\"sitePath\":\"\",\"postLink\":\"\",\"postId\":null,\"isSaved\":true,\"isCrossLink\":false,\"hasCrossLink\":false}","cg_dt_approved_content":true,"cg_dt_mandatory_content":false,"cg_dt_notes":"","cg_dg_source_changed":false,"cg_dt_link_disabled":false,"_yoast_wpseo_primary_brand":"","footnotes":"","featured_focal_points":"","partner_card_description":"","gsap_animation":0},"brand":[],"partner_type":[],"service":[],"industry":[],"partners":[],"page-type":[],"content-group":[],"class_list":["post-892218","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v22.8 (Yoast SEO v22.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>TechChatter odcinek 9. W obronie Pythona - Capgemini Poland<\/title>\n<meta name=\"description\" content=\"M\u00f3wi si\u0119, \u017ce Python jest jednym z najprostszych do nauki j\u0119zyk\u00f3w, a jego zastosowanie jest uniwersalne. W Pythonie mo\u017cna programowa\u0107 zar\u00f3wno proste skrypty, jak i z\u0142o\u017cone \u015brodowiska machine learning. Python posiada te\u017c sporo bibliotek, z kt\u00f3rych mo\u017cna bardzo \u0142atwo skorzysta\u0107, wi\u0119c programista ju\u017c od pierwszych minut pracy z tym j\u0119zykiem ma pod r\u0119k\u0105 ogrom mo\u017cliwo\u015bci i rozwi\u0105za\u0144.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.capgemini.com\/pl-pl\/kariera\/twoja-kariera\/role-eksperckie-menedzerskie\/podcast-techchatter\/sezon2-odcinek9\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TechChatter odcinek 9. W obronie Pythona\" \/>\n<meta property=\"og:description\" content=\"M\u00f3wi si\u0119, \u017ce Python jest jednym z najprostszych do nauki j\u0119zyk\u00f3w, a jego zastosowanie jest uniwersalne. W Pythonie mo\u017cna programowa\u0107 zar\u00f3wno proste skrypty, jak i z\u0142o\u017cone \u015brodowiska machine learning. Python posiada te\u017c sporo bibliotek, z kt\u00f3rych mo\u017cna bardzo \u0142atwo skorzysta\u0107, wi\u0119c programista ju\u017c od pierwszych minut pracy z tym j\u0119zykiem ma pod r\u0119k\u0105 ogrom mo\u017cliwo\u015bci i rozwi\u0105za\u0144.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.capgemini.com\/pl-pl\/kariera\/twoja-kariera\/role-eksperckie-menedzerskie\/podcast-techchatter\/sezon2-odcinek9\/\" \/>\n<meta property=\"og:site_name\" content=\"Capgemini Poland\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-05T13:57:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/prod.ucwe.capgemini.com\/pl-pl\/wp-content\/uploads\/sites\/27\/2023\/06\/zdjecia-.png\" \/>\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=\"23 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.capgemini.com\/pl-pl\/kariera\/twoja-kariera\/role-eksperckie-menedzerskie\/podcast-techchatter\/sezon2-odcinek9\/\",\"url\":\"https:\/\/www.capgemini.com\/pl-pl\/kariera\/twoja-kariera\/role-eksperckie-menedzerskie\/podcast-techchatter\/sezon2-odcinek9\/\",\"name\":\"TechChatter odcinek 9. W obronie Pythona - Capgemini Poland\",\"isPartOf\":{\"@id\":\"https:\/\/www.capgemini.com\/pl-pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.capgemini.com\/pl-pl\/kariera\/twoja-kariera\/role-eksperckie-menedzerskie\/podcast-techchatter\/sezon2-odcinek9\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.capgemini.com\/pl-pl\/kariera\/twoja-kariera\/role-eksperckie-menedzerskie\/podcast-techchatter\/sezon2-odcinek9\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.capgemini.com\/pl-pl\/wp-content\/uploads\/sites\/27\/2023\/06\/zdjecia-.png\",\"datePublished\":\"2023-06-12T09:57:05+00:00\",\"dateModified\":\"2025-12-05T13:57:09+00:00\",\"description\":\"M\u00f3wi si\u0119, \u017ce Python jest jednym z najprostszych do nauki j\u0119zyk\u00f3w, a jego zastosowanie jest uniwersalne. W Pythonie mo\u017cna programowa\u0107 zar\u00f3wno proste skrypty, jak i z\u0142o\u017cone \u015brodowiska machine learning. Python posiada te\u017c sporo bibliotek, z kt\u00f3rych mo\u017cna bardzo \u0142atwo skorzysta\u0107, wi\u0119c programista ju\u017c od pierwszych minut pracy z tym j\u0119zykiem ma pod r\u0119k\u0105 ogrom mo\u017cliwo\u015bci i rozwi\u0105za\u0144.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.capgemini.com\/pl-pl\/kariera\/twoja-kariera\/role-eksperckie-menedzerskie\/podcast-techchatter\/sezon2-odcinek9\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.capgemini.com\/pl-pl\/kariera\/twoja-kariera\/role-eksperckie-menedzerskie\/podcast-techchatter\/sezon2-odcinek9\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/www.capgemini.com\/pl-pl\/kariera\/twoja-kariera\/role-eksperckie-menedzerskie\/podcast-techchatter\/sezon2-odcinek9\/#primaryimage\",\"url\":\"https:\/\/www.capgemini.com\/pl-pl\/wp-content\/uploads\/sites\/27\/2023\/06\/zdjecia-.png\",\"contentUrl\":\"https:\/\/www.capgemini.com\/pl-pl\/wp-content\/uploads\/sites\/27\/2023\/06\/zdjecia-.png\",\"width\":1280,\"height\":720},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.capgemini.com\/pl-pl\/kariera\/twoja-kariera\/role-eksperckie-menedzerskie\/podcast-techchatter\/sezon2-odcinek9\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.capgemini.com\/pl-pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kariera\",\"item\":\"https:\/\/www.capgemini.com\/pl-pl\/kariera\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Podcast techchatter\",\"item\":\"https:\/\/www.capgemini.com\/pl-pl\/kariera\/twoja-kariera\/role-eksperckie-menedzerskie\/podcast-techchatter\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"TechChatter odcinek 9. W obronie Pythona\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.capgemini.com\/pl-pl\/#website\",\"url\":\"https:\/\/www.capgemini.com\/pl-pl\/\",\"name\":\"Capgemini Polska\",\"description\":\"Capgemini\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.capgemini.com\/pl-pl\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pl-PL\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"TechChatter odcinek 9. W obronie Pythona - Capgemini Poland","description":"M\u00f3wi si\u0119, \u017ce Python jest jednym z najprostszych do nauki j\u0119zyk\u00f3w, a jego zastosowanie jest uniwersalne. W Pythonie mo\u017cna programowa\u0107 zar\u00f3wno proste skrypty, jak i z\u0142o\u017cone \u015brodowiska machine learning. Python posiada te\u017c sporo bibliotek, z kt\u00f3rych mo\u017cna bardzo \u0142atwo skorzysta\u0107, wi\u0119c programista ju\u017c od pierwszych minut pracy z tym j\u0119zykiem ma pod r\u0119k\u0105 ogrom mo\u017cliwo\u015bci i rozwi\u0105za\u0144.","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:\/\/www.capgemini.com\/pl-pl\/kariera\/twoja-kariera\/role-eksperckie-menedzerskie\/podcast-techchatter\/sezon2-odcinek9\/","og_locale":"pl_PL","og_type":"article","og_title":"TechChatter odcinek 9. W obronie Pythona","og_description":"M\u00f3wi si\u0119, \u017ce Python jest jednym z najprostszych do nauki j\u0119zyk\u00f3w, a jego zastosowanie jest uniwersalne. W Pythonie mo\u017cna programowa\u0107 zar\u00f3wno proste skrypty, jak i z\u0142o\u017cone \u015brodowiska machine learning. Python posiada te\u017c sporo bibliotek, z kt\u00f3rych mo\u017cna bardzo \u0142atwo skorzysta\u0107, wi\u0119c programista ju\u017c od pierwszych minut pracy z tym j\u0119zykiem ma pod r\u0119k\u0105 ogrom mo\u017cliwo\u015bci i rozwi\u0105za\u0144.","og_url":"https:\/\/www.capgemini.com\/pl-pl\/kariera\/twoja-kariera\/role-eksperckie-menedzerskie\/podcast-techchatter\/sezon2-odcinek9\/","og_site_name":"Capgemini Poland","article_modified_time":"2025-12-05T13:57:09+00:00","og_image":[{"url":"https:\/\/prod.ucwe.capgemini.com\/pl-pl\/wp-content\/uploads\/sites\/27\/2023\/06\/zdjecia-.png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"23 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.capgemini.com\/pl-pl\/kariera\/twoja-kariera\/role-eksperckie-menedzerskie\/podcast-techchatter\/sezon2-odcinek9\/","url":"https:\/\/www.capgemini.com\/pl-pl\/kariera\/twoja-kariera\/role-eksperckie-menedzerskie\/podcast-techchatter\/sezon2-odcinek9\/","name":"TechChatter odcinek 9. W obronie Pythona - Capgemini Poland","isPartOf":{"@id":"https:\/\/www.capgemini.com\/pl-pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.capgemini.com\/pl-pl\/kariera\/twoja-kariera\/role-eksperckie-menedzerskie\/podcast-techchatter\/sezon2-odcinek9\/#primaryimage"},"image":{"@id":"https:\/\/www.capgemini.com\/pl-pl\/kariera\/twoja-kariera\/role-eksperckie-menedzerskie\/podcast-techchatter\/sezon2-odcinek9\/#primaryimage"},"thumbnailUrl":"https:\/\/www.capgemini.com\/pl-pl\/wp-content\/uploads\/sites\/27\/2023\/06\/zdjecia-.png","datePublished":"2023-06-12T09:57:05+00:00","dateModified":"2025-12-05T13:57:09+00:00","description":"M\u00f3wi si\u0119, \u017ce Python jest jednym z najprostszych do nauki j\u0119zyk\u00f3w, a jego zastosowanie jest uniwersalne. W Pythonie mo\u017cna programowa\u0107 zar\u00f3wno proste skrypty, jak i z\u0142o\u017cone \u015brodowiska machine learning. Python posiada te\u017c sporo bibliotek, z kt\u00f3rych mo\u017cna bardzo \u0142atwo skorzysta\u0107, wi\u0119c programista ju\u017c od pierwszych minut pracy z tym j\u0119zykiem ma pod r\u0119k\u0105 ogrom mo\u017cliwo\u015bci i rozwi\u0105za\u0144.","breadcrumb":{"@id":"https:\/\/www.capgemini.com\/pl-pl\/kariera\/twoja-kariera\/role-eksperckie-menedzerskie\/podcast-techchatter\/sezon2-odcinek9\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.capgemini.com\/pl-pl\/kariera\/twoja-kariera\/role-eksperckie-menedzerskie\/podcast-techchatter\/sezon2-odcinek9\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/www.capgemini.com\/pl-pl\/kariera\/twoja-kariera\/role-eksperckie-menedzerskie\/podcast-techchatter\/sezon2-odcinek9\/#primaryimage","url":"https:\/\/www.capgemini.com\/pl-pl\/wp-content\/uploads\/sites\/27\/2023\/06\/zdjecia-.png","contentUrl":"https:\/\/www.capgemini.com\/pl-pl\/wp-content\/uploads\/sites\/27\/2023\/06\/zdjecia-.png","width":1280,"height":720},{"@type":"BreadcrumbList","@id":"https:\/\/www.capgemini.com\/pl-pl\/kariera\/twoja-kariera\/role-eksperckie-menedzerskie\/podcast-techchatter\/sezon2-odcinek9\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.capgemini.com\/pl-pl\/"},{"@type":"ListItem","position":2,"name":"Kariera","item":"https:\/\/www.capgemini.com\/pl-pl\/kariera\/"},{"@type":"ListItem","position":3,"name":"Podcast techchatter","item":"https:\/\/www.capgemini.com\/pl-pl\/kariera\/twoja-kariera\/role-eksperckie-menedzerskie\/podcast-techchatter\/"},{"@type":"ListItem","position":4,"name":"TechChatter odcinek 9. W obronie Pythona"}]},{"@type":"WebSite","@id":"https:\/\/www.capgemini.com\/pl-pl\/#website","url":"https:\/\/www.capgemini.com\/pl-pl\/","name":"Capgemini Polska","description":"Capgemini","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.capgemini.com\/pl-pl\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pl-PL"}]}},"brand_term":[],"parsely":{"version":"1.1.0","canonical_url":"https:\/\/capgemini.com\/pl-pl\/kariera\/twoja-kariera\/role-eksperckie-menedzerskie\/podcast-techchatter\/sezon2-odcinek9\/","smart_links":{"inbound":0,"outbound":0},"traffic_boost_suggestions_count":0,"meta":{"@context":"https:\/\/schema.org","@type":"WebPage","headline":"TechChatter odcinek 9. W obronie Pythona","url":"https:\/\/www.capgemini.com\/pl-pl\/kariera\/twoja-kariera\/role-eksperckie-menedzerskie\/podcast-techchatter\/sezon2-odcinek9\/","mainEntityOfPage":{"@type":"WebPage","@id":"https:\/\/www.capgemini.com\/pl-pl\/kariera\/twoja-kariera\/role-eksperckie-menedzerskie\/podcast-techchatter\/sezon2-odcinek9\/"},"thumbnailUrl":"","image":{"@type":"ImageObject","url":""},"articleSection":"Uncategorized","author":[],"creator":[],"publisher":{"@type":"Organization","name":"Capgemini Poland","logo":""},"keywords":[],"dateCreated":"2023-06-12T09:57:05Z","datePublished":"2023-06-12T09:57:05Z","dateModified":"2025-12-05T13:57:09Z"},"rendered":"<meta name=\"parsely-title\" content=\"TechChatter odcinek 9. W obronie Pythona\" \/>\n<meta name=\"parsely-link\" content=\"https:\/\/www.capgemini.com\/pl-pl\/kariera\/twoja-kariera\/role-eksperckie-menedzerskie\/podcast-techchatter\/sezon2-odcinek9\/\" \/>\n<meta name=\"parsely-type\" content=\"index\" \/>\n<meta name=\"parsely-pub-date\" content=\"2023-06-12T09:57:05Z\" \/>\n<meta name=\"parsely-section\" content=\"Uncategorized\" \/>","tracker_url":"https:\/\/cdn.parsely.com\/keys\/capgemini.com\/p.js"},"archive_status":false,"featured_image_src":"https:\/\/www.capgemini.com\/pl-pl\/wp-content\/themes\/capgemini2025\/assets\/images\/mockup.png","featured_image_alt":false,"jetpack_sharing_enabled":true,"distributor_meta":false,"distributor_terms":false,"distributor_media":false,"distributor_original_site_name":"Capgemini Poland","distributor_original_site_url":"https:\/\/www.capgemini.com\/pl-pl","push-errors":false,"_links":{"self":[{"href":"https:\/\/www.capgemini.com\/pl-pl\/wp-json\/wp\/v2\/pages\/892218","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.capgemini.com\/pl-pl\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.capgemini.com\/pl-pl\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.capgemini.com\/pl-pl\/wp-json\/wp\/v2\/users\/413"}],"replies":[{"embeddable":true,"href":"https:\/\/www.capgemini.com\/pl-pl\/wp-json\/wp\/v2\/comments?post=892218"}],"version-history":[{"count":14,"href":"https:\/\/www.capgemini.com\/pl-pl\/wp-json\/wp\/v2\/pages\/892218\/revisions"}],"predecessor-version":[{"id":913783,"href":"https:\/\/www.capgemini.com\/pl-pl\/wp-json\/wp\/v2\/pages\/892218\/revisions\/913783"}],"up":[{"embeddable":true,"href":"https:\/\/www.capgemini.com\/pl-pl\/wp-json\/wp\/v2\/pages\/700947"}],"wp:attachment":[{"href":"https:\/\/www.capgemini.com\/pl-pl\/wp-json\/wp\/v2\/media?parent=892218"}],"wp:term":[{"taxonomy":"brand","embeddable":true,"href":"https:\/\/www.capgemini.com\/pl-pl\/wp-json\/wp\/v2\/brand?post=892218"},{"taxonomy":"partner_type","embeddable":true,"href":"https:\/\/www.capgemini.com\/pl-pl\/wp-json\/wp\/v2\/partner_type?post=892218"},{"taxonomy":"service","embeddable":true,"href":"https:\/\/www.capgemini.com\/pl-pl\/wp-json\/wp\/v2\/service?post=892218"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.capgemini.com\/pl-pl\/wp-json\/wp\/v2\/industry?post=892218"},{"taxonomy":"partners","embeddable":true,"href":"https:\/\/www.capgemini.com\/pl-pl\/wp-json\/wp\/v2\/partners?post=892218"},{"taxonomy":"page-type","embeddable":true,"href":"https:\/\/www.capgemini.com\/pl-pl\/wp-json\/wp\/v2\/page-type?post=892218"},{"taxonomy":"content-group","embeddable":true,"href":"https:\/\/www.capgemini.com\/pl-pl\/wp-json\/wp\/v2\/content-group?post=892218"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}