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 Pokazałem Ci jak
skopiować statyczne pliki za pomocą a w tej reakcji dowiemy się jak wypełniać np.
indeks kropka HTML danymi które pobieramy np.
z bazy danych.
Aby to zrobić musimy najpierw przejść do
naszego pliku HTML i musimy dowiedzieć się czego chcemy co chcemy wypełnić.
Załóżmy że chcemy wypełnić ten jeden
musimy zamienić obecną treść za pomocą dwóch wąsów kolorowych
i w środku musimy podać jak będzie się nazywała nasza zmienna czyli np.
chcemy żeby to był nasz przykład nam.
I zauważ że nazwałem to z dużej litery nie
bez powodu dlatego że to musi być taka sama nazwa jaka jest nazwa pola w
strukturze czyli w tym przypadku będzie to z dużej litery dlatego żeby
znowu ta struktura i to pole było dostępne poza paczką w której my tworzymy tę
strukturę żeby biblioteka standardowa Lange była w stanie coś z tym zrobić.
Dajmy sobie jeszcze na przykład tak HTML
żeby ten HTML był faktycznie HTML poprawnym.
Dodajmy jeszcze herb i herb dodajmy.
Czyli to będzie to co będzie w pasku
przeglądarki w tytule naszego tuba widoczna jest np.
kropka.
Przeniesiemy jeszcze nasz styl CSS do środka
i żeby to zrobić musimy stworzyć specyficzne zapytania czyli
wejdziemy z powrotem do naszego pliku i niestety ale musimy pozbyć się tego
naszego handlu i stworzyć naszą nową funkcję która będzie
znowu to będzie jego twarz i ona będzie przyjmowała tego co będzie HTTP response.
I będzie to request.
Oczywiście będzie to wskaźnik HTTP tak jak i tutaj w środku
będziemy robili pod zmianę treści w HTML u na prawdziwą na prawdziwe dane żeby to
zrobić musimy stworzyć naszą strukturę w której wspomniałem czyli np.
tata.
I to będzie nasza struktura w tej strukturze tworzymy sobie pole
namiotowe będzie to kręgiem i pole czyli dokładnie te same pola które
stworzyliśmy w pliku HTML tutaj i tutaj i tworzymy naszą data tutaj czyli to
będzie jego tata i jako nam możemy powiedzieć że to będzie.
To Kamil a jakoś to będzie.
Cytat Chciałem to niech to będzie na końcu musimy dać przecinek
i w tym momencie musimy pobrać nasz indeks HTML a następnie go wyświetlić.
Aby to zrobić najpierw musimy pobrać użyć biblioteki Templeton
żeby jak najszybciej ją pobrać wystarczy wpisać Temple.
Visual Studio podpowiada że to musi być HTML Temple i tu będzie taka funkcja jak.
Pena ma jedną metodę i ona ma tutaj
Phillips i ona przyjmuje te kilka różnych plików my tutaj podamy jeden plik to to
będzie nasz indeks indeks HTML czyli kropka kropek czyli będziemy poruszać się
w katalogu w którym uruchamiamy nasz program.
Następnie katalog stacji Index HTML.
I ta funkcja zwraca tablet zwraca nam błąd.
I tutaj zauważ że nazwaliśmy tak samo naszą bibliotekę na naszą bibliotekę
paczkę tak samo jak naszą polecam to unikać dlatego że często
Goulding nie wie kompilator Lange nie wie czy ma użyć paczki czy ma użyć zmiennej.
Dlatego nazwijmy to tempo sprawdźmy czy jest błąd.
Jeśli jest błąd to piszemy i piszemy.
I wyjdziemy z tej funkcji.
Dalej mamy dostępny piątą klatkę więc możemy na niej wypróbować różne metody.
I tutaj będzie funkcja Executive i funkcja Executive przyjmuje komplet.
Można ją wywołać na obiekcie a czy na obiekcie na strukturze Templeton musimy
podać czy nasz architekt i datę którą chcemy wypełnić te dane czyli
po prostu Podajemy tu nasz kraj i naszą data.
I to wszystko.
Musimy jeszcze zobaczyć oczywiście ta funkcja może wykluczyć błąd więc tak samo
jak poprzednim razem obsłuży ten błąd tutaj i przeszliśmy to do błędu.
Po to żebyśmy wiedzieli że to jest
błąd tego a nie ten lub ten tylko żebyśmy wiedzieli że ten
dotyczy tego a ten błąd dotyczy faktycznie opracowania tego HTML.
No dobrze to uruchomimy nasz program i
zobaczmy czy to działa po golach wyrzucił nam błąd że statek
jest jakaś zmienna nie jest używana oczywiście ta zmienna nie jest używana na
tę chwilę komentujemy uruchomimy to ponownie
i jest to może być w takim razie w latach 80 80 i zobaczmy że mamy patent.
Dlaczego.
Dlatego że musimy jeszcze dodać naszego
jako handel i tutaj pod patronem pułkowników.
Chcemy żeby to był nasz pas
czy wpisujemy że ta funkcja ma być w tym serwerze bo zapomnieliśmy tego zrobić.
Właściwie to ja zapomniałem
odświeżyć tę stronę i zobaczmy że mamy tutaj jednak jako tytuł PL.
Przyjrzyjmy sobie źródło strony.
Musimy sobie podejrzeć elementy czyli mamy odmieniony i mamy Hello Kamil.
Zauważ proszę czy ten plik
nie został odczytany dlatego że H1 jest dalej na czarno.
I tutaj dochodzimy do pewnego problemu
dlatego że jeśli ustawiamy sobie że gołoledź ma wywoływać
tę metodę to niestety ale jeśli spróbujemy np.
podać najpierw proces to zobaczymy że nie może być osiągalne czy jest
nieosiągalne dlatego że nie obsługujemy takiego prawa.
Mamy teraz kilka sposobów w jaki sposób możemy to obsłużyć.
Najlepiej byłoby żebyśmy zrobili właśnie
coś takiego jak First na direct czyli stacji np.
tutaj. Wszystkie pliki są dostępne pod katem
na przykład i tutaj będzie tak że jeśli tego nie zrobimy to w ten
sposób to musimy przejść do indeksu HTML i to musi być AZS.
I ukośnie.
Czyli musimy się odwołać tak naprawdę do
naszych czasów czyli musimy się odwoływać do tego miejsca.
A to się odwołuje do jednego statek
uruchomimy nasz kod zobaczymy kto ma szansę zadziałać i odświeżyć stronę.
Jak widzimy dalej to nie działa.
Dlaczego to nie działa dlatego że mamy tutaj.
Próbujemy uruchomić stronę i zobaczmy co
się stanie dalej i zobaczymy że to jest kamień.
Dlaczego tak się dzieje dzieje się tak dlatego że musimy obsłużyć.
Ten pas w nieco inny sposób musimy tutaj
dodać na końcu ukośnie a następnie musimy przerobić ukośnie
kilkaset ukośnie tak na używając metody HTTP Graphics na ukośnie Asseco.
I tutaj trzeba oddać statek Anders
i to spowoduje że każdy pas do Asseco będzie kierowany w to miejsce a nie np.
w to miejsce Polak dzięki temu wie że ma nie uruchamiać tego od pasa tylko ma
uruchomić HTTPS Graphics FX przerabia ukośnie na ukośnie.
Dzięki temu uruchamia wtedy tę metodę i uruchamia i otwiera jakikolwiek plik
który znajduje się w katalogu Asseco uruchamia.
Zobaczmy czy to ma szansę zadziałać.
Wiem że to jest troszkę skomplikowane
ale to niestety trzeba zapamiętać i za każdym razem sprawdzam
jak to zrobić bo nigdy nie pamiętam rzadko to robię więc zobaczmy faktycznie Halo
Kamil jest już niebieskie więc domyślam się że działa to poprawnie
jeszcze uruchomimy ten plik bezpośrednio i faktycznie mamy tutaj kogoś kolor w bloku
i oczywiście jeśli zmienimy sobie tutaj nasze pola na jakieś inne bądź dodamy nowe
i będziemy ich używali no to możemy bez problemu używać tego jako
powiedzmy że taki zamiennik czegoś w rodzaju ten placek w PHP czy w
innych językach które obsługują odmianę i wypełnianie HTML a jakimiś danymi.
To by było na tyle w tej lekcji zapraszam do kolejnej.