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.
I zanim wyślemy nasz projekt na serwer VPN
to najpierw musimy stworzyć nasze konto chwila aby zbudować obraz z naszą
aplikacją aby stworzyć fajne tworzymy po prostu plik o nazwie fail.
Bardzo ważne jest to żeby było z dużej litery a następnie ja przygotowałem dla
ciebie gotowy skrypt który buduje naszą aplikację w ten sposób więc wklej on
będzie dostępny w tej wersji i omówi go krok po kroku co ten skrypt
robi na początku z obrazami ostatniej wersji Langa.
Tworzymy obraz o nazwie Building.
Następnie ustalamy sobie w jakim katalogu będziemy pracować i będziemy pracować
Kosznik a następnie kupujemy nasze pliki go mod i sól do naszego katalogu App
a następnie uruchomimy metodę download co komenda Download.
Ona pobiera wszystkie zależności które są wymagane czyli wszystkie biblioteki np.
czyli jak PC którego używamy czegoś których używamy w naszym projekcie.
Następnie używamy metody i uruchamiamy ją
od wersji go Modrzejewskiej uruchamiamy weryfikację czy wszystkie
zależności zostały poprawnie pobrane a następnie kupujemy cały nasz
projekt do tego katalogu AB a następnie uruchamiamy taką komendę.
Ta komenda powoduje że
budujemy naszą aplikację i pewien konkretny sposób z konkretnymi flagami.
Co oznaczają poszczególne flagi.
Możesz sobie zobaczyć kuku ale tutaj
pokrótce tylko powiem że tutaj wywołuje metodę kobiet
z na platformę Linux dlatego że możemy oczywiście zbudować
flagę na jaką platformę chcemy z jakiej platformy chcemy czy piszemy na Maku.
To ja bez problemu mogę zbudować go na Linuksa czy na Windowsa czy na telefony
czternastego i nawet oznacza że są wtedy dodawane dodatkowe funkcje
które pozwalają m.in. na tworzenie zapytań i tego typu rzeczy
dlatego że gdybyśmy tego nie dodali to niektóre funkcje są niedostępne.
Jakie dokładnie to są funkcje.
Polecam zobaczyć faktycznie i poszukać takich informacji.
Następnie tworzymy nowy
nowy obraz i to jest obraz Albin czyli tworzymy sobie czystego lekkiego Linuksa.
Uruchamiamy tutaj i instaluje certyfikaty
certyfikaty są potrzebne po to aby połączenie i połączenia HTTP i
działały poprawnie i następnie ustalamy że nasz
katalog w którym będziemy pracować a następnie kupujemy z
Wildera czyli kupujemy z tego obrazu w katalogu
a DX kupujemy całą dokumentację którą stworzyliśmy w spacerze a następnie.
Tak ale wspominaliśmy tutaj dwa kroki dlatego że najpierw kupujemy
AB Main czyli kupujemy naszego nasz zbudowany z katalogu root.
Następnie dodajemy coś co się nazywa plus VAT do tego kompa z VAT.
W tym przypadku służy do tego
aby najpierw poczekać aż do tego komputer postawi nam np.
po squasha na porcie 54 32.
Z tego co pamiętam jak ten port będzie dostępny to dopiero uruchomi nasz skrypt.
Dlaczego.
Dlatego że jeśli postawimy kompa za to często jest sytuacja w której nasz Google
staje wstaje wcześniej przed bazą danych i baza danych brak bazy danych powoduje że
nasz dom się zamyka dlatego że baza nie jest dostępna.
Następnie ustawiamy odpowiednie
uprawnienia dla naszego skryptu kupujemy naszą dokumentacja udostępniamy mamy porty
80 80 i 80 81 a następnie jeśli chcemy uruchomić nasz obraz to trzeba uruchomić
skrypt a następnie skrypt machine czyli nasz skrypt z aplikacją.
To w zasadzie tyle jeśli chodzi o
chwilę ja zapraszam do następnej akcji w której stworzymy nasz plik do.