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 tej lekcji pokażę ci jak generować tak energii egipską aktorkę i dowiemy się w
jaki sposób zachować hasło żeby one były bezpiecznie przechowywane w naszej bazie
danych nawet jeśli ona kiedyś mogłaby wylecieć.
Aby to zrobić musimy w naszej paczce.
Następnie przechodzimy do
tego tutaj przycisku tworzenia nowych folderów tworzymy folder
Harper's i w tym folderze stworzymy nowy plik który będzie nazywany i kropka.
To.
Musimy najpierw nadać nazwę Paczki czyli to będzie paczka Harper's.
Jej debiut m.in. otworzył mi się w złym
folderze więc przyciąga do Felliniego Harper's.
Mam go w poprawnej paczce i ja dla ciebie
przygotowałem Sniper Sniper kodu który zajmuje się generowanie tablety
i możesz go pobrać materiał do tego kursu w tej lekcji.
Więc jak go tutaj w kraju już omawiamy co tutaj się dzieje.
Najpierw używamy biblioteki jej tablety z tego rynku i żeby ją pobrać to wystarczy
w zasadzie wpisać skopiować to i wpisać to przekreślić i ona ma automatycznie
pobierze tę bibliotekę a następnie mamy tutaj dwie funkcje jednak jej token.
Podajemy nasz Józek ID czyli identyfikator
naszego użytkownika a następnie podajemy nasz sekret którym będziemy podpisywać ten
token więc będziemy musieli sobie wymyślić później.
Następnie zostaje nam zwrócony token lub błąd.
I tutaj tworzymy sobie Klaps czyli to jest stworzone w taki sposób pozwól że
ja ci to pokażę czyli tablety mają tablety działa w ten sposób że tak
pokrótce że pierwsza część to jest nagłówek czyli tzw.
HDR i tutaj jest podany jakim algorytmem
jest zakodowane i następnie jest pilot i w tym pilocie
możemy tak naprawdę umieścić cokolwiek chcemy i w naszym przypadku chcemy.
I to jest tzw.
.
I trzecia część to jest sygnatura czyli to jest taki to jest podpis
który nie jest generowany za pomocą naszego naszego sekretariatu
i my naszym pilocie chcemy umieścić user IT Google robi się to w bardzo prosty
sposób tworzymy nasz klan który będzie mapą więc pod
kluczem języka gdy umieszczamy nasz ID i następnie tworzymy nasz token.
Używamy do tego kodowania HS 256.
Następnie nasz pilot.
I tutaj mamy.
Następnie podpisujemy.
Naszym sekretem i tutaj może wystąpić błąd i wtedy go
zwracamy a jeśli nie to zwracamy token i brak błędu.
Następnie musimy zrealizować czy nasz token to jest token więc stosujemy go
i tutaj służy do tego funkcja przekazujemy nasz token i
przekazać funkcję która zwraca nam jej tablet i to na podstawie
tego tokena musimy zwrócić sekret jako tablicę bajtów i bądź jakieś wystąpi.
Tutaj możemy np.
pobrać z jakiejś naszej bazy danych i mieć kilka sekretów w zależności od tego jakie
serwisy obsługujemy ale w naszym przypadku będzie to jeden z więc będziemy
przekazywać sekret do tej funkcji jako parametr.
I tutaj zwracamy w zasadzie
token schowany i wiemy że ten token już jest podpisany prawidłowo czyli my go
sprawdzamy za pomocą tej funkcji i zwracamy błąd jeśli takowy istnieje.
No dobrze mamy w takim razie generowanie
tego token Sprawdźmy jak to działa za komentujemy.
W takim razie nasze infrastrukturę i stwórzmy token czyli np.
z naszych usług IT.
To będzie jeden i nasz sekret deklarujemy na górze jako stałą
czyli niech to będzie koszt i to będzie jej sekret.
I niech to będzie np.
duet stwórzmy nasz token czyli będzie
stworzony token lub błąd i to będzie generator.
Oczywiście musimy najpierw importować
naszą paczkę czyli to będzie kurs 1 ukośnie czyli paczki px.
Teraz tworzymy token czyli generator musimy przekazać mu oczywiście Józek ITI
i nasz najnowszy sekret czyli to będzie sekret.
Sprawdzamy czy Wystąpił błąd podczas
generowania tokena czyli jeśli wystąpił błąd to chcemy.
Uśpić naszą aplikację możemy nasz token.
Wybierzmy do konsoli i uruchomimy nasz program.
Zobaczmy że tutaj został wypisany nasz głos kupujmy na stronę Jamesa
Dio i wklej my go tutaj jak widzimy mamy tutaj w pilocie Just Add
1 czyli dokładnie to co zrobiliśmy mamy nasz nagłówek a tutaj w piśmie etap.
łeb tak i po wpisaniu tutaj
możemy zobaczyć że generowana sygnatura to jest dokładnie taka więc ona zgadza się z
tą sygnaturą która została wygenerowane tutaj czyli token jest poprawny.
Teraz żeby ten token sprawdzić czy on jest poprawny to musimy użyć Harper's kropka
Wajdy czyli tam gdzie musimy przekazać tutaj nasz token i nasz sekret.
I to jest token lub błąd.
Jeśli błąd to to zwróćmy że to jest.
I tu mamy nasz token tylko że to jest jakby sparaliżowany token token.
Jeśli mamy sprecyzowany token to żeby z
niego wyciągnąć klamkę mamy klamkę ale czym jest to klamstwo klamstwo.
To jest pewnego rodzaju
interface ten interfejs musimy pracować do naszego Maple.
Dlaczego.
Dlatego że tutaj tworzymy
nowy team map Crimson Map Class komplementuje interfejs klamstwo.
Tak więc żeby sprostować interfejs do
konkretnego typu musimy użyć kropka otwieramy i zamykamy okrągły nawias uwaga
bo to jest nowe i wpisujemy nazwę naszej paczki czyli jej
i używamy tu naszego typu do którego chcemy pracować czyli map Class.
I teraz jeśli wyciągniemy z tego Just Add on deklaruje że tak musimy sobie
importować tabletki do naszego pliku lub go.
I dzięki temu tutaj mamy teraz not just
czyli jest nieużywane i to będzie user User ID.
I możemy sobie wypisać już pobrane z tego tokena dzięki temu.
I to jest interfejs czyli my musimy jakby zapisać to jako
użyć i zapisać to jako jakiś typ w tym momencie widać że tutaj jest jeden czyli
nasze już zostały pobrane z tego a więc wiemy jak wygenerować taki token
i wiemy jak go zapisać to teraz przejdźmy do tego aby generować nasze hasło
i kasować nasze hasło a następnie porównywać czy skasowane hasło jest takie
samo jak to które użytkownik podał aby to zrobić musimy stworzyć nowy plik
nazwijmy go po ASP w Krakowie i w tym pliku będziemy
najpierw kasować hasło tworzymy sobie nową funkcję którą nazwiemy chociaż PASMO
która będzie przyjmowała nasze hasło które będzie te posterunki będzie zwracało
to hasło już skasowane ale hamowanie może się nie powieść więc
możemy wrócić lub błąd żeby sfałszować nasze hasło
używając algorytmu backup jak gdyby inaczej używamy paczki Beckett
i pokrótce mamy tutaj taką funkcję kompasu ona przyjmuje dwa parametry.
Najpierw nasze hasło które będzie tablicą bajtów i cost the World cost instant.
Tutaj jest koszt i jeśli
kod który jest podany jest mniejszy niż minimalny koszt tworzenia tego kasowania i
fałszowania ponownego jest ustawiony w tyle
żeby porównać hasło musimy użyć tej metody czyli jak widzimy dokumentacja jest bardzo
dobrze udokumentowana więc piszemy nasze hasło i
gotujemy do tablicy bajtów i musimy podać koszt musimy też sprawdzić jaki jest nasz
kluczowy koszt żebyśmy go użyli albo jaki jest minimalny minimalny to jest
maksymalny czas 31 lat kwotowy to jest 10 więc możemy ustawić to na 10.
żeby użyć kwotowego
i ta funkcja zwraca coś więc zobaczmy zwraca nam tablicę bajtów czyli nasze
skasowane hasło i błąd więc bierzmy sfałszowane hasło.
Czy to będzie absurd.
I nasz błąd.
Jeśli błąd jest różny od zera to zwróćmy pusty chociaż i ten błąd.
A jeśli nie wszystko jest OK
to róbmy naszą tablicę bajtów na String hasło i nie chcemy żadnego błędu.
Mamy pierwszą funkcję zróbmy drugą Passport i najpierw podamy posłuży jako
argument i jako drugi nasze zwykłe hasło i to jako warunek buli.
No i tak sobie to używamy tak jak dokumentacja nam to powiedziała.
Na początku podajemy nasze skasowane hasło a następnie podajemy nasze normalne hasło.
I co nam ta funkcja zwraca ta funkcja nam zwraca.
Błąd. Czyli jeśli jest błąd.
To hasło jest nieprawidłowe a jeśli brak błędu nie ma.
To hasło jest prawidłowe.
Czyli jeśli błąd jest różnorodna to zwróćmy Falls a jeśli wszystko jest OK to
dobrze wiemy już jak sfałszować hasło wiemy jak je porównać.
To sprawdźmy czy to działa.
Więc mamy takie nasze hasło czyli hasło zakładając że to będzie 1 2,5 samo imię.
Czyli to będzie użycie paczki Harper's.
Kropka.
I to będzie nasza metoda.
Do środka musimy wrzucić tam nasze hasło sprawdzić czy
oczywiście występuje błąd jeśli występuje bo na Total.
A jeśli nie to wybierzmy to hasło.
I zobaczmy czym to hasło jest tak naprawdę ruchomy nasz program i zobaczmy w konsoli
co zostanie wypisany naszym hasłem To jest taki flash 1 2 4 5.
Więc teraz porównajmy czy teraz to hasło
będzie takie samo jak to schowane żeby to zrobić mamy paczkę harcerską
czyli ta funkcja którą przed chwilą napisaliśmy wpisujemy tutaj nasze
Passport no i nasze hasło i zobaczmy jeśli jest prawidłowe to w
piśmie że hasło jest prawidłowe i my i widzimy
hasło jest prawidłowe czyli nasze hasło 1 5 hasło jest dobrze porównywane.
No tak wiemy już że nasze
dwie funkcjonalności czyli generowanie akces tokena i tworzenie i porównywanie
hasła tworzenie hasła kasowania hasła działa.
Teraz możemy przejść do najważniejszej części czyli do implementacji naszego
serwisu i to zrobimy w następnej lekcji do której serdecznie zapraszam.