Kielnia Kodu

Kielnia Kodu Tworzymy proste rozwiązania skomplikowanych problemów. Skontaktuj się z nami, pomożemy zautomatyzować Twój biznes i zwiększyć efektywność twoich pracowników.

W Twojej firmie wciąż arkusz kalkulacyjny to skarbnica wiedzy i wyrocznia? Nikt do końca nie wie co się tam dzieje? Skontaktuj się z nami, pomożemy zautomatyzować Twój biznes, zwiększyć efektywność twoich pracowników. Przeniesiemy Cię do chmury, żebyś zawsze miał wszystkie potrzebne pliki i systemy pod ręką. Niech żadna sytuacja już nigdy cię nie zaskoczy. Twój sklep internetowy mało sprzedaje? Z

twojej aplikacji mobilnej nikt nie chce korzystać? Postaw na proste rozwiązanie i pozwól nam zaprojektować na nowo swoje systemy, żeby twoi kliencie wiedzieli gdzie i co kliknąć. Masz ogólny pomysł na aplikację, ale nie wiesz jak to przedstawić firmie IT, żaden problem. Skontaktuj się z nami, razem przeprowadzimy serię warsztatów, po której otrzymasz dokładny opis planowanego systemu. Wierzymy, że po warsztatach nie będziesz już chciał szukać nikogo innego, ale oczywiście masz taką możliwość.

👋 Hej! Dzisiaj chciałbym porozmawiać z Wami o konstrukcji defer w języku Go. Jest to bardzo przydatna funkcjonalność, kt...
25/04/2024

👋 Hej! Dzisiaj chciałbym porozmawiać z Wami o konstrukcji defer w języku Go. Jest to bardzo przydatna funkcjonalność, która pozwala na kontrolowanie błędów w naszym kodzie.

Konstrukcja defer pozwala na przesunięcie wykonania konkretnej linii kodu na koniec funkcji, bez względu na to, w którym miejscu została ona wywołana.

Przykładowe zastosowanie konstrukcji defer to np. zamykanie plików, które otworzyliśmy w trakcie działania programu. Dzięki temu, nie musimy pamiętać o tym, aby zamknąć plik w każdym miejscu, gdzie go otworzyliśmy, a jednocześnie mamy pewność, że zostanie on zamknięty na końcu funkcji.

Podsumowując, konstrukcja defer w języku Go jest bardzo przydatnym narzędziem do kontrolowania błędów w naszym kodzie. Dzięki niej możemy upewnić się, że pewne linie kodu zostaną zawsze wykonane, niezależnie od tego, co dzieje się w trakcie działania programu.

👨‍💻🔎

🙌 Po przejściu przez najważniejsze informacje dotyczące pakietu fmt, przechodzimy do kolejnego istotnego tematu.✅ Chat, ...
18/04/2024

🙌 Po przejściu przez najważniejsze informacje dotyczące pakietu fmt, przechodzimy do kolejnego istotnego tematu.

✅ Chat, zgodnie z naszą prośbą wyjaśnił nam działanie obsługi błędów za pomocą mechanizmu zwracania błędów w GO lang.

⚠️ Dowiedzieliśmy się dzięki temu, że obsługa błędów w języku GO często jest realizowana poprzez zwracanie wartości błędu wraz z wynikiem funkcji. Ogólny schemat obsługi błędów w GO wygląda następująco⤵️

👉 Funkcja zwraca dwa wyniki - wynik operacji oraz wartość błędu, jeśli takowy wystąpił.

👉 Funkcje wykonujące operacje zwracają błąd w przypadku jakichś nieprawidłowości.

👉 Funkcje wywołujące sprawdzają wartość zwracaną w celu określenia, czy operacja zakończyła się powodzeniem, czy też błędem.

👉 Gdy wystąpi błąd, jego obsługa jest przeprowadzana przez kod odpowiedzialny za wywołanie funkcji.

🚨 Nie zdziw się, jeśli napotkasz interfejs "error", gdyż to właśnie jego używa się do reprezentowania błędów. Standardowa biblioteka języka GO zawiera pakiet "errors" pozwalający na tworzenie prostych błędów z pomocą funkcji New.

🙃 W praktyce jednak wiele funkcji zwraca bardziej szczegółowe typy błędów implementujące interfejs "error".

❓ Masz jakieś pytania odnośnie do tego tematu? Jeśli tak, zadaj je w komentarzu!

⁉️ Co jeszcze powinieneś wiedzieć o pracy z pakietem fmt w języku GO??1️⃣ Chat sugeruje, że początkujący powinni przede ...
11/04/2024

⁉️ Co jeszcze powinieneś wiedzieć o pracy z pakietem fmt w języku GO??

1️⃣ Chat sugeruje, że początkujący powinni przede wszystkim zrozumieć znaczenie znaków specjalnych w łańcuchach formatujących (%s, %d, %v, itd.), gdyż ich niepoprawne użycie może skutkować występowaniem błędów.

2️⃣ Ponadto, w kontekście zarządzania pamięcią, warto wiedzieć, iż korzystanie z funkcji fmt.Sprintf() do formatowania dużej ilości danych może powodować wykorzystanie znacznej ilości pamięci (zwłaszcza używając jej w pętlach przetwarzając duże dane).

3️⃣ Kolejną istotną informacją jest możliwość kontrolowania szerokości i precyzji wyświetlanych danych, używając specyfikatorów formatowania. Przykładowo, %10s oznacza wyrównanie ciągu znaków do prawej krawędzi pola o szerokości 10 znaków. Istnieje także możliwość kontrolowania precyzji dla floatów.

4️⃣ Ostatnią z istotnych informacji jest kontrolowanie dodatkowych flag formatowania, np. flaga "+" dla liczb, flaga "-" dla wyrównywania do lewej, flaga "0" dla wypełniania zerami, itd.

🙈 Przyznam szczerze, że nie do końca rozumiem, dlaczego AI zrobiła z tego modułu osobny punkt, a nie jedynie podpunkt przy wprowadzeniu do języka GO.

👍 Tak czy inaczej, na pewno warto przyswoić sobie te informacje, gdyż będziemy z tego korzystać w przyszłości!

⁉️ Czym jest pakiet "fmt" i formatowanie wyjścia w języku GO?✅ Osoba początkująca ma prawo nie wiedzieć o czym mowa, dla...
04/04/2024

⁉️ Czym jest pakiet "fmt" i formatowanie wyjścia w języku GO?

✅ Osoba początkująca ma prawo nie wiedzieć o czym mowa, dlatego warto zacząć od poproszenia chatu o zaprezentowanie nam podstawowych danych na ten temat.

👉 Już na początku dowiadujemy się, że pakiet "fmt" jest narzędziem do formatowania wyjścia, czyli służy wygodnemu drukowaniu danych na konsolę lub inne wyjście w określonym formacie.

Do podstawowych funkcji pakietu "fmt" możemy zaliczyć⤵️

☝️ fmt.PrintIn(): Drukuje dane na standardowe wyjście, dodając na końcu nową linię.

✌️ fmt.Sprintf(): Formatuje dane, ale zwraca je jako ciąg znaków, zamiast drukować na standardowym wyjściu.

Pakiet "fmt" może mieć oczywiście także bardziej zaawansowane zastosowania. Będą to m.in.

1️⃣ Skanowanie danych za pomocą fmt.Scanf(): Jest to funkcja pozwalająca na wczytywanie danych od użytkownika w trakcie działania programu, używając podanego formatu.

2️⃣ Formatowanie danych jako tekst JSON za pomocą fmtPrintf(): Funkcja ta może np. automatycznie przekonwertować mapę na format JSON. Pomaga to w debugowaniu oraz komunikacji z innymi usługami wymagającymi danych w formacie JSON.

3️⃣ Sformatowane drukowanie danych za pomocą fmt.Fprintf(): Dzięki tej funkcji możemy drukować sformatowane dane do dowolnego obiektu implementującego interfejs io.Writer (np. pliki, sieć, itd.)

4️⃣ Ponadto warto jeszcze wspomnieć o formatowaniu tekstu za pomocą text/template.

🤩 Mam nadzieję, że po przeczytaniu tego posta masz już wstępne wyobrażenie o tym, do czego mogą przydać Ci się możliwości pakietu "fmt" w języku GO.

🚀 Początki w nowej pracy, nie tylko w IT, bywają trudne i mocno stresujące.🤯 Masa nowych rzeczy, których trzeba się nauc...
02/04/2024

🚀 Początki w nowej pracy, nie tylko w IT, bywają trudne i mocno stresujące.

🤯 Masa nowych rzeczy, których trzeba się nauczyć…

🔥 Mam dla Ciebie kilka wskazówek, które pomogą Ci rozeznać się w nowej sytuacji.

1️⃣ Pytaj - przede wszystkim nie bój się pytać. Na początku masz prawo nie wiedzieć wielu rzeczy. Na jednym z pierwszych spotkań warto dopytać o narzędzia, z jakich korzystają członkowie zespołu. Bardzo prawdopodobne, że część z nich jest płatna i będziesz musiał otrzymać odpowiednią licencję, żeby z nich w pełni korzystać.

2️⃣ Bądź gotowy na problemy techniczne. To nic nadzwyczajnego, że nie będziesz w stanie rozwiązać ich samodzielnie. Od tego właśnie jest zespół, aby Ci pomóc, także zawsze możesz zwrócić się o wsparcie do jego członków.

🫣 Serio, nie ma się czego wstydzić. Nawet ja, mając już ponad 10 lat stażu w IT, w pierwszych dniach zadaję dużo pytań, aby dobrze zrozumieć projekt, nad którym będę pracował.

🤩 Pewnie, do wielu rzeczy można dojść samemu, jednak często kończy się to frustracją i marnowaniem całego dnia na coś, co można zrozumieć w kilka chwil z pomocą innych.

3️⃣ Bądź otwarty na naukę. Jasne, skoro dostałeś tę pracę, pewnie już wiele umiesz. Jednak samo opanowanie danej technologii, a praca nad projektem rozwijanym przez zespół latami, to dwie różne rzeczy.

👨‍💻 Po pierwsze, czeka Cię nauka kultury pracy obowiązującej w danej firmie, a po drugie, dokształcenie się z zakresu tematyki, jakiej dotyczy projekt. Na przykład rozwijając aplikację dla księgowych, gwarantuję Ci, że Twoja wiedza z tego zakresu po kilku miesiącach siłą rzeczy mocno wzrośnie.

Mam nadzieję, że Cię nie przestraszyłem😎 Na pewno z czasem zaczniesz czuć się pewniej w nowej roli i staniesz się coraz bardziej produktywnym członkiem zespołu. Ciesz się więc tą przygodą i podejmuj wyzwania!🙌

🚨 5 najczęstszych błędów przy korzystaniu ze wskaźników w GO.⚠️ O wskaźnikach wiemy już wiele. Jak pisałem w poprzednim ...
28/03/2024

🚨 5 najczęstszych błędów przy korzystaniu ze wskaźników w GO.

⚠️ O wskaźnikach wiemy już wiele. Jak pisałem w poprzednim poście, są one potężnym narzędziem, ale trzeba z nich korzystać rozważnie.

👉 Zwrócę Ci dziś uwagę na najczęstsze błędy, jakie zdarza się popełniać początkującym, podczas wykorzystywania wskaźników w języku GO.

🔥 Gotowi? Lecimy!

1️⃣ Nieprawidłowe dereferencjowanie wskaźników - osoby początkujące często zapominają o dereferencjonowaniu wskaźników przed dostępem do wartości. Może to skutkować błędami kompilacji lub działaniami na niepoprawnych danych.

2️⃣ Niepoprawne inicjowanie wskaźników - wskaźniki niezainicjonowane lub wskazujące na nieprawidłowe miejsca w pamięci mogą doprowadzić do awarii programu!

3️⃣ Nieprawidłowe przekazywanie wskaźników do funkcji - gdy przekazujemy wartość wskaźnika do funkcji, która nie oczekuje wskaźnika, możemy napotkać nieoczekiwane efekty uboczne.

4️⃣ Niezwalnianie pamięci - gdy ręcznie alokujemy pamięć za pomocą new lub make i zapomnimy zwolnić ją na koniec pracy, narażamy się na wycieki pamięci!

5️⃣ Użycie wskaźników do struktur z zerowanymi wartościami domyślnymi - stworzenie wskaźnika do struktury i niezainicjowanie jej pól może prowadzić do błędów wykonania.

🫣 Oczywiście powyższe błędy mogą przytrafić się także osobom bardziej doświadczonym, jednak osoby początkujące są na nie szczególnie narażone.

👍 Zwracaj szczególną uwagę na te elementy podczas pracy ze wskaźnikami w GO!

😎 Czego możesz się spodziewać, zaczynając pracę w IT?🤩 Jeśli niebawem zaczynasz pracę na nowym stanowisku, przede wszyst...
26/03/2024

😎 Czego możesz się spodziewać, zaczynając pracę w IT?

🤩 Jeśli niebawem zaczynasz pracę na nowym stanowisku, przede wszystkim przyjmij moje gratulacje. Oznacza to, że pokonałeś dziesiątki, a może nawet setki innych kandydatów!

🫣 To koniec stresu związanego z rekrutacją, ale zapewne w jego miejsce pojawia się obawa przed tym, co Cię czeka w związku z podjęciem się nowego zajęcia.

👍 Dlatego chciałbym krótko opowiedzieć Ci, jak wyglądają pierwsze dni pracy na stanowisku programisty.

🥲 Radzę Ci nastawić się na to, że początki będą intensywne i pełne wyzwań oraz niespodzianek.

👨‍💻 Pracodawcom bardzo zależy, aby nowy pracownik jak najszybciej poczuł się częścią zespołu i mógł zacząć realizować swoje zadania. Będzie to skutkować natłokiem nowych informacji związanych z innymi członkami zespołu, ich sposobem pracy i narzędziami przez nich używanymi.

✅ Pierwszy dzień niemal na pewno rozpocznie się od przygotowania Twojego środowiska pracy, w tym konfiguracji skrzynki pocztowej, komunikatorów używanych w zespole oraz nadania dostępów do repozytorium kodu i innych elementów wykorzystywanych w firmie.

⚠️ Spodziewaj się także kilku spotkań z osobami, które wprowadzą Cię do zespołu i opowiedzą o typowym dniu pracy. Spotkania będą z resztą istotnym elementem Twojej pracy. Jeśli wydawało Ci się, że idąc do IT unikniesz kontaktu z ludźmi, jesteś w dużym błędzie.

👉 IT spotkaniami stoi. Niemal na pewno będziesz pojawiał się na daily, podczas których członkowie zespołu prezentują aktualny postęp prac. Ale nie bój się, na samym początku nie będą od Ciebie na pewno wymagać zbyt dużo.

🔥 Spokojnie. Wdech, wydech. Będzie dobrze.

🙌 Za tydzień podrzucę Ci jeszcze kilka wskazówek, które pomogą Ci możliwie bezstresowo rozpocząć pracę.

🤔 Szukając bardziej zaawansowanych przykładów użycia wskaźników, natknąłem się na informację, że język GO, w przeciwieńs...
21/03/2024

🤔 Szukając bardziej zaawansowanych przykładów użycia wskaźników, natknąłem się na informację, że język GO, w przeciwieństwie do języka C nie posiada arytmetyki wskaźnikowej.

👍 Sam nie miałem styczności z językiem C od czasu studiów, więc z pomocą chatu chętnie przypomniałem sobie czym jest i jak działa arytmetyka wskaźnikowa w C. Tobie też to polecam w ramach ćwiczenia i zobaczenia jak wygląda inny język. Czytanie kodu nie powinno Ci przysporzyć trudności, bo języki programowania w wielu elementach są do siebie podobne.

🛒 Zaawansowanym zastosowaniem, o którym warto wspomnieć jest mechanizm, gdzie jeden wskaźnik wskazuje na inny wskaźnik. Na przykładzie e-commerce, możemy stworzyć listę produktów za pomocą wskaźników, a następnie stworzyć wskaźnik do tej listy oraz wskaźniki do poszczególnych produktów w tej liście. Pozwoli nam to manipulować danymi produktów w koszyku i modyfikować poszczególne produkty.

👨‍💻 Warto też wspomnieć o unikalnych i współdzielonych wskaźnikach w języku GO.

➡️ Unikalny wskaźnik może wskazywać na konkretny obiekt, niewspółdzielony z innymi strukturami danych.

➡️ Wskaźnik współdzielony może z kolei wskazywać na ten sam obiekt, używany przez różne struktury danych, co pozytywnie wpływa na zarządzanie pamięcią i uniknięcie nadmiarowego kopiowania danych.

💪 Wskaźniki w języku GO są więc potężnym narzędziem, pozwalającym na tworzenie elastycznych, efektownych i ogólnych struktur danych.

⚠️ By korzystać z nich efektywnie, trzeba jednak mieć odpowiednią wiedzę i działać uważnie!

🚨 Czego spodziewać się na rozmowie rekrutacyjnej na junior developera?😬 Gdy Twoje CV zrobi pozytywne wrażenie, przed Tob...
19/03/2024

🚨 Czego spodziewać się na rozmowie rekrutacyjnej na junior developera?

😬 Gdy Twoje CV zrobi pozytywne wrażenie, przed Tobą kolejny etap rekrutacji - rozmowa kwalifikacyjna. Czego powinieneś się po niej spodziewać?

👉 Przede wszystkim testów praktycznych. Ich zadaniem jest sprawdzenie Twoich umiejętności programistycznych i znajomości konkretnego języka.

🔥 Testy te mogą odbywać się w różnej formie, w zależności od firmy. Jedni stawiają na narzędzia automatyczne, takie jak Codility, inni preferują live coding, obserwując Twój sposób myślenia podczas rozwiązywania zadań.

👍 W tym drugim przypadku, pamiętaj aby próbować coś pisać, nawet jeśli nie jesteś pewny rozwiązania. Zawsze warto też dodać kilka słów wyjaśnienia, by mieć pole do ewentualnej dyskusji.

✅ Bardzo prawdopodobne, że padną także pytania o technologie zawarte w CV, dlatego wpisz tam tylko rzeczy, o których masz jakieś pojęcie.

🤔 Ponadto należy się nastawić na zagadnienia z zakresu konkretnego języka programowania (dla node.js często pada pytanie o zasadę działania eventLoop i asynchroniczność), a także wytwarzania oprogramowania, czy dobrych praktyk. Sam najczęściej pytam tu o SOLID i czysty kod.

❌ Niestety nie ma drogi na skróty. Trzeba nauczyć się tych pojęć i umieć wytłumaczyć ich zastosowanie w praktyce. Warto też odświeżyć sobie wiedzę o git, bo będzie to Twoje codzienne narzędzie pracy.

🤩 Myślę, że te wskazówki powinny znacząco zwiększyć Twoje szanse na dostanie pracy!

😎 Jeśli chcesz dowiedzieć się więcej o tym, co może pójść nie tak, przeczytaj artykuł, który kilka lat temu napisałem dla Bulldogjob⤵️

https://bulldogjob.pl/readme/lepszy-rydz-niz-nic-czyli-historia-pewnej-rekrutacji

🙌 Powodzenia na rekrutacji! Trzymam za Ciebie kciuki!

Jak obiecał, tak zrobił! 😊‼️ Zgodnie z zapowiedzią, przechodzimy dziś do omówienia zalet i wad stosowania wskaźników w j...
14/03/2024

Jak obiecał, tak zrobił! 😊

‼️ Zgodnie z zapowiedzią, przechodzimy dziś do omówienia zalet i wad stosowania wskaźników w języku GO.

✅ Zaczniemy od tych pierwszych. Co zyskujemy wykorzystując wskaźniki?

👉 Efektywność pamięciowa - przekazanie wskaźnika, zamiast całej kopii struktury sprawia, że oszczędzamy pamięć.

👉 Możliwość modyfikacji - stosowanie wskaźnika pozwala na modyfikowanie oryginalnego obiektu, a nie jego kopii, co ma znaczenie na przykład przy operacjach na dużych danych.

👉 Przekazywanie wartości null - wskaźniki przydają się w przypadku, gdy obiekt może być nieobecny.

❌ A co z wadami?

👉 Ryzyko wycieków pamięci - gdy nieprawidłowo zarządzamy wskaźnikami, kiedy pamięć jest alokowana, ale nie zwalniania w odpowiednim czasie, mogą nastąpić wycieki pamięci.

👉 Złożoność kodu - wskaźniki rodzą niebezpieczeństwo wprowadzania dodatkowej złożoności kodu, szczególnie gdy programista nie jest zaznajomiony z ich obsługą.

👉 Potencjalne problemy z bezpieczeństwem - nieprawidłowe używanie wskaźników może prowadzić np. do odwołania do pamięci null lub niezidentyfikowanych zachowań, co może mieć wpływ na bezpieczeństwo.

🔥 Jak widzisz, wskaźniki mają wiele niezaprzeczalnych plusów, ale używając ich, nie można zapominać o niebezpieczeństwach jakie za sobą niosą.

🧐 Co zrobić, by dostać posadę junior developera?To proste… choć niełatwe.😉🙃 Wystarczy wypaść lepiej od innych na rozmowi...
12/03/2024

🧐 Co zrobić, by dostać posadę junior developera?

To proste… choć niełatwe.😉

🙃 Wystarczy wypaść lepiej od innych na rozmowie o pracę.

🤯 Ale wcześniej trzeba zrobić coś, aby w ogóle na tę rozmowę rekrutacyjną zostać zaproszonym. A tu, nie ukrywam, konkurencja jest dość spora.

✅ Z pewnością przyda się tutaj dobre CV. Powinno ono:

👉 Być czytelne
👉 Wskazywać nabyte doświadczenie (niekoniecznie w IT, jeśli się przebranżawiasz)
👉 Zaczynać się od kilku słów o Tobie

🔥 I właśnie do ostatniego ze wspomnianych elementów radzę się szczególnie przyłożyć, bo to pierwsze, na co zwróci uwagę rekruter i może od tego zależeć, czy zainteresuje się Tobą, czy odłoży Twoje CV na kupkę.

😫 Większość kandydatów wpisuje tam ogólniki typu "sumienność, odpowiedzialność, praca w zespole". Ty możesz podejść do tematu nieco inaczej i dzięki temu się wyróżnić.

👨‍💻 Przykładowo, jeśli zmieniasz zawód i ma to być Twoja pierwsza praca, napisz, dlaczego chcesz programować, skąd wybór tej technologii i języka. Dodatkowo możesz wspomnieć o swoich poprzednich doświadczeniach, które mogą pomóc w tej pracy.

💻 Warto mieć także jakiś większy projekt do zaprezentowania znajomości wszystkich elementów wytwarzania oprogramowania, a nie tylko danego języka.

🤠 W czasach dużej konkurencji, nietypowa forma autoprezentacji może być Twoim największym atutem. Jeśli nie czujesz się na siłach by zrobić to samodzielnie, możesz skorzystać z pomocy specjalistów, którzy pomogą Ci podrasować Twoje CV i wesprą kilkoma poradami, by zwiększyć szansę zaproszenia na rozmowę kwalifikacyjną!

✅ Skoro wiemy już, po co nam są wskaźniki w języku GO i znamy przykłady ich zastosowań, pora wejść w temat nieco głębiej...
07/03/2024

✅ Skoro wiemy już, po co nam są wskaźniki w języku GO i znamy przykłady ich zastosowań, pora wejść w temat nieco głębiej.

👉 W tym celu poprosiłem ChatGPT o opisanie, jak w języku GO łączyć wskaźniki z interfejsami, by stworzyć elastyczne i ogólne struktury danych.

🧐 Chat zaczął od objaśnienia, czym są interfejsy w GO i za to duży plus dla niego!

👨‍💻 Dzięki temu wiemy, że są to zbiory metod. Jeśli typ implementuje wszystkie metody zdefiniowane przez interfejs, to automatycznie implementuje ten interfejs. Pozwala to na polimorfizm (jeśli różne typy danych spełniają wymagania interfejsu, można je traktować w sposób jednolity).

🙌 Dalej Chat tłumaczy nam, że dzięki przechowywaniu wskaźników do wartości, zamiast wartości bezpośrednio, struktury danych mogą obsługiwać różne typy danych. Jeśli więc dana struktura zawiera pole będące interfejsem, staje się ona elastyczna i ogólna.

🔥 Ponadto wykorzystanie interfejsów i wskaźników pozwala na tworzenie ogólnych funkcji i metod, działających na różnych typach danych.

🙄 Powyższe tłumaczenie może Ci się wydawać nieco zawiłe i wykraczać poza poziom początkujący, ale warto je znać, by wyróżnić się na rozmowie kwalifikacyjnej.

😎 Wskaźniki, jak każde rozwiązanie mają zarówno swoje zalety, jak i wady. Za tydzień opowiem Ci o jednych i drugich nieco więcej!

Adres

Wroclaw

Strona Internetowa

Ostrzeżenia

Bądź na bieżąco i daj nam wysłać e-mail, gdy Kielnia Kodu umieści wiadomości i promocje. Twój adres e-mail nie zostanie wykorzystany do żadnego innego celu i możesz zrezygnować z subskrypcji w dowolnym momencie.

Udostępnij