od Podstaw
6 godz. 26 min · Go · Full-stack i Programowanie
Piotr KrzesajW Go wszystko opiera się o typy. Czym one są? Tak zwane typy proste(string, int, float itd.) to tylko początek, interfejsy, struktury i nie tylko. Pokażę Ci jak używać wielu wątków Go i jakie są sposoby komunikacji między nimi, a także opowiem i pokażę na praktycznych przykładach jakie zagrożenia niesie ze sobą wykorzystywanie wielowątkowości.
W Go nie mamy obiektowości znanej z wielu innych języków. Posiada zalążki obiektowości ale sprawia to wielu osobom problemy jak podejść do architektury aplikacji. Nauczę Cię jak podejść do funkcyjności w taki sposób aby wciąż nawet duże aplikacje były łatwo rozwijalne lub co ważniejsze, była możliwość podzielenia ich na mniejsze mikroserwisy gdy zajdzie taka potrzeba.
Wśród programistów można usłyszeć głosy że w Go wielowątkowość jest świetnie rozwiązana i trudno się z tym nie zgodzić ale warto pamiętać że nasze mózgi działają jednowątkowo i często pomijamy zagadnienia takie jak wyścig wątków, deadlock i inne wyzwania, które stawia przed nami praca na dzisiejszych procesorach. Pokażę i wytłumaczę Ci w praktyce większość z nich i jak sobie z nimi radzić i na co uważać. Jeśli nie pracowałeś z językami wielowątkowymi to ta sekcja jest specjalnie dla Ciebie.
Zastanawiałem się wiele razy czy nie istnieje taka technologia w której piszę sobie jeden pliczek i z tego pliku do każdego języka mogę wygenerować sobie klienta i serwer jedną komendą. To jest w wielkim skrócie GRPC, nie musisz się przejmować czy używasz HTTP 1.1/2.0, czy używasz websocketów do transmisji, czy przesyłasz dane w formacie JSON, XML, Protobuf, czy jest moje API kompatybilne wstecz. Tym wszystkim zajmuje się GRPC. Wyjaśnię Ci czym dokładnie jest, dlaczego jest super i wreszcie jak tego używać razem z językiem Go. Napiszemy praktyczny projekt chatu w którym wykorzystamy funkcję server-streaming.
Pisząc aplikację chcemy aby uruchamiała się ona tak samo niezależnie czy uruchamiamy ją na Linuxie, macOS czy na Windowsie i z pomocą przychodzi nam Docker. Pokażę Ci jak z gotowej aplikacji napisanej w Go stworzyć obraz Dockerowy aby móc go uruchamiać na swoim komputerze bądź serwerze. Pokażę Ci również jak nasz obraz Dockerowy połączyć z bazą danych za pomocą Docker Compose aby móc cieszyć się działającą aplikacją uruchamianą jedną komendą.
Kurs Go nie mógłby obejść się bez serwera HTTP stworzonego tylko z pomocą biblioteki wbudowanej w język Go. Dokładnie tak, nie musisz instalować nic poza językiem i już możesz tworzyć serwery co jest świetną wiadomością. Następnie pokażę Ci popularną bibliotekę Gin do tworzenia serwerów. Dzięki temu zobaczysz różnice i ocenisz czy warto zostać przy wbudowanej bibliotece czy może używać zewnętrznych.
Jak w każdym języku serwerowym tak i w Go możemy się podłączyć pod bazę danych. Krok po kroku wyjaśnię Ci jak to zrobić prosto i przyjemnie używać baz SQL, które od dziesiątek lat cieszą się niezwykłą popularnością. Migracje, zapytania czy dbanie o połączenie to nie będzie dla Ciebie nic trudnego.
Ten Kurs powstał z myślą o osobach, które chciałyby poszerzyć swoją wiedzę o język Go. Zakłada on że posiadasz już wiedzę z minimum jednego innego języka programowania i wiesz w jaki sposób działa komunikacja po protokole HTTP. Możesz też znać Go i chcieć zobaczyć jak dzielić programy na paczki tak aby były łatwo rozwijalne w przyszłości.
Dowiedzieliśmy się w jaki sposób tworzyć
slangu za pomocą standardowej paczki czyli ukośnie http.
Ale są też inne paczki które oferują np.
większą wydajność albo trochę inaczej się ich używa.
łatwiej się ich używa i tutaj pokażę ci jedną z nich która jest
często używana przez programistów którzy piszą na co dzień w języku lol
więc musimy przejść do przeglądarki i wpisać sobie gola ang.
Green Library
i wejść do pierwszego linku czyli ja podczas
jednej z pierwszych lekcji pokazywać jak zainstalować taką paczkę więc zainstaluje
tekst proszę samodzielnie a ja w międzyczasie również ją zainstaluje.
Aby to zrobić pokażę jeszcze raz musimy
przejść do terminala czyli klikamy ten terminal albo w moim
przypadku przechodzimy do zakładki i tutaj wpisujemy go get i przekazujemy
naszego URL a ja usuwamy https i klikamy enter i w tym przypadku Google
zainstalował już nam tę bibliotekę więc w pliku Micro możemy stworzyć nasz serwer.
Aby to zrobić przechodzimy z powrotem do dokumentacji naszej biblioteki.
Wyjeżdżamy trochę niżej i to mamy idealny przykład.
W jaki sposób taki sekret zbudować więc przekonujemy ten kod i zobaczmy
co możemy w nim zrobić więc od razu jak pijemy to zobaczymy że
musimy importować naszą paczkę z Chin żeby to zrobić oczywiście wpisujemy import.
Tutaj musimy przykleić ulgę w naszej
paczki więc łatwiej mi będzie po prostu użyć in world.
Dlatego że nie pamiętam niestety pełnego
natomiast tutaj paczki więc mamy tutaj nasz serwer
zmieńmy nazwę na jakąś bardziej przyjazną czyli coś nowego.
No i oczywiście ekran może nam zwrócić błąd.
Tak więc obsłuży ten błąd co nie jest oczywiście uwzględnione w
dokumentacji co moim zdaniem jest pewnym niedociągnięcia.
I.
Zabijamy naszą aplikację jeśli nie uda nam się wystartować tego serwera i tutaj
w przykładzie jest podany Ping jest zwrócona.
Błąd.
Dwieście status quo to dwieście z Jacksonem Message Pong
przepis to tak żeby to było w osobnej funkcji żeby było czytelnie.
Czyli stwórzmy np.
Funk ping pong i kupujmy to co występowaliśmy w.
Funkcja powinna wyglądać w ten sposób.
Czyli ona przyjmuje nasz kontekst i to jest jej kontekst i z tego kontekstu
możemy tutaj wyciągać różne rzeczy i w tym przypadku cała kropka np.
Federer i z tego jednego możemy wyciągać np.
wszystkie nagłówki zapytania.
Bardzo łatwy sposób
ale do tego wraca błąd więc musimy wszystko i piszemy tutaj ping pong
i uruchomiona zostanie wzmocniony błąd dlatego że
tutaj zabrakło nam okrągłego asa i chyba wszystko jest OK więc uruchomimy ten
kod i tutaj na starcie wypisał coś
czyli stworzył nam czyli na której jest w trybie the back.
Jeśli chcemy zmienić to na
list to musimy dodać Environment warto było albo ustawić z kodu czy Jane Willis.
Wtedy on nie będzie po prostu wypisywał nam do konsoli tych wszystkich
danych które tutaj jest czyli że zasługuje na pokrycie 80 80.
Mamy gadżet ping i on będzie miał funkcję ping pong.
To dobrze przejdźmy do przeglądarki firmy 80 85 mm Enter mamy automatycznie 404 Page
not found to Page przepraszam odnośnik Ping.
I zobaczymy że został zwrócony nam Jackson
który ma klucz Message i czyli w naszej bibliotece Jim
automatycznie za pomocą taki skład nie możemy wykluczyć naszego życia.
Oczywiście możemy tutaj stworzyć naszą strukturę np.
Pong która będzie miała nasz Message i będzie ona miała stringi jeśli tutaj
zamiast tego stworzymy sobie nasz Message i tutaj
napiszemy Pong i zamiast 200 taka ciekawostkę możemy użyć HTTP status OK.
Tu spokoj to jest to samo.
Co dwieście to jest zgodne z tym standardem więc jeśli zwracamy statystyki
to jest to 201 i zamiast wpisywania ręcznie kodów możemy używać status OK.
I to oznacza że to będzie kod 200 metrów na coś takiego i uruchomimy ten kod.
Wyskoczył nam błąd.
Dlaczego dlatego że zapomniałem o powiedzeniu że jest to struktura i to nie
jest Message tylko jest to Pong więc uruchom jeszcze raz.
Teraz już działa odświeżony i dostaniemy
dokładnie to samo tylko że proszę zauważyć że Messenger jak
większe jest z dużej litery żeby to żeby ją zmniejszyć trzeba dodać tak Johnson.
I maseczki teraz uruchomi po raz kolejny chyba Piątek i odświeża.
No to mamy maseczki z małej litery i uważasz że.
Kodowanie i kodowanie że jest ona jest o wiele prostsze w przypadku kina.
Jeśli chcemy np.
wysłać Jacksona do na to żeby zdecydować
tego reżysera to mamy tutaj kropka trykot a Jackson.
Trzeba zobaczyć do dokumentacji że nie pamiętam na tę chwilę.
I tu pobieramy dane z gwary tu mamy z formularzy automatyczne pobieranie danych.
Tu mamy.
Znowu z formularzy.
Musimy poszukać po nazwie Jackson a wśród Jackson czyli to będzie po prostu
Bird on Blind Jackson powoduje że on spróbuje np.
użytkowników np.
naszego Ponga.
Pobrać czyjś pociąg to on nam może zwrócić błąd i jeśli błąd jest różny od lat to np.
zwrócimy że to jest bat request czyli to
będzie pat status Request i chcemy żeby nic nie zostało zwrócone i żeby funkcja
wyszła z kopa czyli próbujemy kasować naszego Ponga.
Jeśli się nie uda to zwracamy że to jest
moment na zapytanie a jeśli nie to prosto możemy zwrócić Pink.
No dobrze spróbujmy w takim razie uruchomić ten kod.
I jeśli Przejdziemy teraz do naszej przeglądarki i odświeżony
to zostanie nam wzbogacony a jeśli wejdziemy do inspektora w przeglądarce i
zobaczymy że tutaj mamy błąd trochę powiększy ekran i zobaczymy że.
Network.
I tutaj mamy status Bad Request.
A jeśli zobaczymy czym jest kwestia jest to nasza setka.
Czyli jeśli chcemy zapytać.
O coś to musimy tutaj faktycznie podać
Jacksona który będzie miał pole Message z jakąkolwiek wartością.
No dobrze pokazałem ci w jaki sposób
tworzyć serwer za pomocą zewnętrznej biblioteki i to by było tyle w tej lekcji.
Zapraszam Cię do kolejnej.