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.
Pytam czy w kolejnej lekcji w której pokażę ci w jaki sposób wgrać naszą
aplikację na zewnętrzny sekretariat DPS który należy do nas bądź na jakieś inne
które nie należy do nas ale mamy do niego dostęp.
Na początku musimy wiedzieć czy możemy się zalogować do niego za pomocą H.
żeby się zalogować do serwera za pomocą RSS H musimy wpisać hasło Akcja.
I tutaj użytkownik w moim przypadku będzie
to router i adres IP naszego naszego VPN i po naciśnięciu przycisku
Enter powinniśmy być w stanie się zalogować.
I tutaj jak widzisz jest to Ubuntu i w moim przypadku będziemy
wygrywać to właśnie na Ubuntu uruchomi go na nowo.
I jesteśmy teraz w katalogu w którym znajduje się nasz projekt.
Chcemy teraz skopiować cały nasz katalog z
projektem na ten sektor żeby to zrobić musimy przejść do katalogu wyżej a
następnie użyć takiej komendy CP i potem używamy parametru poza R czyli
czyli będziemy w stanie skopiować dzięki temu cały katalog.
Więc kupujemy wszystko z katalogu kurs
jeden na nasz sektor czyli root i tutaj podajemy nazwę użytkownika i po mapie
IP naszego serwera czyli w moim przypadku będzie to tyle.
Następnie tutaj bardzo ważne dajemy dwa kropek i katalog do którego chcemy
wkraczać wszystkie pliki które znajdują się w tym katalogu kurs
damy tyle ile żebyśmy weszli do katalogu domowego a następnie chcemy stworzyć ten
katalog z 1 i tam wklej wszystko co znajduje się w naszym katalogu z
projektem i po naciśnięciu klawisza enter poczekamy chwilę aż się to kopiuje.
W moim przypadku będzie to bardzo krótka
chwila już się skopiował on i za loguje się na nasz serwis.
Jak już się do niego zareaguje wybierzmy konsolę i zobaczmy co tutaj mamy.
Ja tutaj mam katalog z 1 Snap.
I nas interesuje katalog plus wejdziemy do
niego komendą CD i wybierzmy to co my tutaj mamy.
No i mamy tutaj wszystkie pliki które
posłużyły nam wcześniej do tego żeby uruchomić też serwer teraz Zauważ proszę
że potrzebujemy do tego żeby uruchomić ten doktorat więc musimy go zainstalować na
naszym serwerze w przypadku Ubuntu będzie tapetę Instal do pauza plus
i jeśli uruchomimy to paczka powinna zostać zainstalowana.
W moim przypadku jest już to zainstalowane
więc tutaj nie jest przeprowadzona żadna aktualizacja.
Jeśli chcemy uruchomić faktycznie i
zbudować to wykonujemy na nim komendę AP i po naciśnięciu klawisza enter
wyskakuje nam błąd dlatego że w pliku doc kompozycjami nie jest on wspierany dlatego
że wersja maksymalna jaką jest pijana to sekcja 3 3 albo 2 kropkę 2
więc otwieramy sobie nasz komputer i zmieniamy
wersję z 3 kropka 8 na 3 kropka 3 Escape 2 kropek w kółko czyli zapis i wyjścia.
I w tym momencie uruchamiamy po raz kolejny komendę AP
i nasz sekret się zbudował na porcie 80 80 i na porcie 80 81 znajduje się.
No i mamy tamten adres IP 188
i tak dalej więc uruchomimy nasz numer PESEL zobaczmy czy czy to zadziała.
Tutaj znajduje się nasz adres czyli to będzie adres naszego sektora.
I tu jest nasz port.
Zobaczmy czy możemy stworzyć użytkownika pod tym adresem.
Jak widzisz przyszło nam tutaj komenda że
faktycznie użytkownik został stworzony za loguje się na tego użytkownika
tylko musimy użyć poprawnego adresu i dostajemy Access Token do tego
użytkownika to zasób nie bójmy się do czatu i zobaczmy czy to też nam zadziała.
Obserwujemy czat jest dostępny.
No dobrze to zróbmy teraz tak żeby nasze aplikacje mobilne które pokazywały
wcześniej zobaczmy czy one też działają z serwerami.
Skupimy gaz i ja za chwilę wrócę tutaj z uruchomionym i aplikacjami mobilnymi.
No i ja już wracam tutaj z aplikacjami
mobilnymi uruchomionym i wklej tutaj adres IP naszego serwera.
Nie mam konta więc muszę je stworzyć.
Stwórzmy sobie konto Janek Nowak PL.
Imię Jan nazwisko Nowak hasło warte
i stwórzmy tego użytkownika zarobimy się na niego pisaliśmy z dużej
litery i on hasło QWERTY bójmy się i wyskoczyło nam błąd.
Ciekawe dlaczego.
Może jest złe hasło.
Jan Nowak duet PR który ma jeszcze jedno
konto a aplikacja nam poprawiła o PR więc tutaj również musimy wpisać po
już logowania działa więc myślę teraz tutaj na użytkownika Hello Fellow.
Czyli tu będzie e-mail i hasło Hello.
I po zalogowaniu.
Mamy dwóch użytkowników i tutaj uruchomił się break point w Wiadomościach więc
wracamy do naszej aplikacji i ja jestem Jankiem chcę pisać z
użytkownikiem więc wysyłam do niego wiadomość.
Wiadomość przychodzi więc ja piszę z Jankiem więc Janek.
I po zamknięciu tego czatu ja wyślę do użytkownika Halo jeszcze jedną wiadomość.
Zobaczmy czy jeśli uruchomimy ten temat na nowo to czy historia zostanie czytana.
I wygląda na to że historia została
odczytana z tego wiadomości oczywiście więc to by wyglądało na to że rzuciliśmy
naszą aplikację na nasz wpis co oznacza że pokaże Ci jeszcze jedną rzecz jeśli chodzi
o zapowiedzi promowania takich aplikacji a mianowicie uruchamianie ich w tle tak
żebyśmy nie musieli być zawsze spięci pod terminal kiedy uruchamiamy taką aplikację.
Wróćmy więc do naszego do naszej konsoli
i tutaj musimy niestety zabić naszą aplikację żeby to zrobić z naciskiem
Control C i żeby uruchomić to w tle uruchamiamy komendę Composite lub pauza.
Jeśli to uruchomimy to nasz stanie i możemy bez problemu się łączyć z nim
a aplikacja dalej będzie działała tylko oczywiście musimy podłączyć się do niej
jeszcze raz i po podłączeniu wszystko wygląda OK.
Wiadomości dalej możemy wysyłać.
Po wysłaniu wiadomości wiadomość tutaj nam przychodzi.
Coś tutaj w aplikacji się nie otworzyło ale działa więc.
Tymczasem to by było na tyle jeśli chodzi
o nasz projekt który którym jest czat i który wróciliśmy na nasz własny.