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.
W poprzedniej lekcji napisaliśmy własne
opisy oraz obsługuje nasz serwis i HTTP ale żeby uruchomić to na produkcji albo
dać to komuś innemu do używania musimy dać mu jakieś opcje czyli np.
nie chcemy żeby port działał na porcie 80 81 ale żeby działał np.
na porcie 3000 albo na 80.
żeby to zrobić i żeby nie kombinować za
każdym razem od nowa naszej aplikacji jak zapewne się domyślać że jeśli masz
doświadczenia z promowaniem służą do tego zmienne środowiskowe.
Aby z nich skorzystać Google jest to oczywiście bardzo proste wystarczy wejść
do naszego pliku go a następnie wyszukać miejsce które chcemy
żeby było brane jako zmienna środowiskowa i sekrety.
I teraz żeby pobrać coś ze zmiennej środowiskowej musimy użyć paczki OS i z
dużej litery N i funkcja przyjmuje klucz i zwraca zawsze Stream.
Więc jeśli chcemy np.
z tego zrobić Integer to musimy go kasować oczywiście więc musimy do tego stworzyć
osobną funkcję która będzie nam tak robiła.
No dobrze ale my chcemy tylko ścigać więc
piszemy sobie tutaj jej tablet i Google gwarancja że tutaj jest błąd
dlatego że Value String jest dlatego że ta zmienna to będzie zmienna a nie stała.
I w tym momencie mamy już naszą stałą ubraną jako zmienną środowiskową.
No dobrze tylko że jeśli
projektuje i tworzymy oprogramowanie no to chcielibyśmy żeby ta zmienna środowiskowa
miała też domyślną wartość jeśli nie została przekazana.
żeby to zrobić musimy do naszego katalogu Herbert dopisać sobie nowy plik.
I tutaj nie będzie Environment Environment.
No niech to będzie w pakiecie oczywiście
nasz plik stworzył się w złym katalogu więc go przenosimy i nadajemy mu Harper's.
A następnie tworzymy sobie funkcję Gate która przyjmuje Nam Ki jako string.
Jako String folwarku jako String oczywiście czyli to będzie nasz string.
I teraz jeśli bierzemy
naszą zmienną środowiskową z paczki oraz z kluczem który został przekazany no to
możemy sprawdzić jak owalu możemy sprawdzić czy jest różna od
z treningu i jeśli jest różne to możemy zwrócić wadium a jeśli nie
to zwracamy folwarku tym co tworzymy pobieranie jest wartością domyślną to
jest to samo tylko że Get It to i tutaj będziemy zwracać np.
port jako Integer.
I tutaj dbali o to będzie Integer więc tu już wszystko OK ale musimy
ratować tę wartość na Integer żeby to zrobić najpierw musimy sprawdzić czy nie
jest puste a następnie koncertować czyli lub błąd.
I tu będzie a to i czyj to będzie Atom.
Czyli będzie on.
Atom String do IPA.
I tutaj przekazujemy nasze walił.
Jeśli błąd wystąpił na co zwracamy dziś hurtową wartość a jeśli nie chcemy
wiedzieć to mamy dwie funkcje które nam będą pobierały zmienne środowiskowe.
To dobrze to mamy tutaj ale tutaj mamy jeszcze
ponad 80 81 i chcielibyśmy użyć do tego zmiennej środowiskowej.
Jeśli chodzi o nasz sektor HTTP to tutaj
też możemy użyć w tej zmiennej środowiskowej żeby to zrobić.
Kropka.
Niech to będzie pod kluczem HTTP port i domyślną wartość to niech to będzie 80
81 80 80 dla sektora HTTP kupimy sobie to teraz usunie ten nasz port i dodajmy
niech to będzie port i domyślną portem niech będzie 80 81.
I tym oto sposobem jeśli uruchomimy z tymi
zmiennymi środowiskowym czyli o nazwie HTTP port to zostanie zmieniona na
poprawną wartość a jeśli nie to zostanie użyta domyślną wartość.
A tymczasem zapraszam Cię do następnej lekcji.