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.
Witajcie w kolejnej lekcji w której zaczniemy pisać nasz pierwszy poważny
projekt i w tym celu musimy nauczyć się obsługi podstawowej obsługi baz danych.
W tym celu pokażę ci
bibliotekę zewnętrzną która się nazywa oraz i ona służy do obsługi bazy danych.
W tym celu żeby ją zainstalować musimy wejść oczywiście w Google wpisać link
i to już jest z kolei to będzie baza aplikować którą
w następnych lekcjach będziemy przerabiać na użycie psa pokaże jak szybko i prosto
to zrobić ale nie chcę w tym momencie zmuszać do instalacji dodatkowego
oprogramowania jakim jest gaz więc wykorzystamy sita.
Minusem z kolei jest to że niestety jest to bardzo wolna baza danych dlatego nie
jest polecane żeby ją używać ale to Development nadaje się świetnie.
W międzyczasie wszedłem na Google pisałem Google Google ang.
SQL Lite.
Wchodzimy w pierwszy możliwy link i tutaj
mamy instrukcję jak podłączyć się pod bazę Pl lub Po S.A. lub sklep.
I tutaj chcemy użyć tej bazy dlatego kupiłem sobie ten
import i wkraczamy do jakże by inaczej do naszej paczki.
Oczywiście geolog od razu nam
podpowiedział że on nie posiada takiej bazy.
Dlatego szybko to naprawił rozwiązując ten problem instalując taką
paczkę jeżdżą po prostu na ten import naciska Fix i tutaj mam gałkę takiego
naciskiem to i Google instaluje i zobaczmy co trzeba zrobić żeby
zaistnieć żeby taką bazę otworzyć i stworzyć.
Wystarczy przechowywać te linijek kodu i już tłumaczy co ona dokładnie robi.
Ona używa paczki Goran otwiera ją i tworzy bazę SQL Light która będzie się nazywała w
ten sposób my zmienimy ją na Database kropka DB.
I tutaj jest jakiś konflikt i ten konflikt na tę chwilę jest pusty.
On ma w sobie jakieś jakieś metody komunikacyjne.
Oczywiście po otwarciu tego musimy
sprawdzić czy nie wystąpił żaden błąd jeśli wystąpił to chcemy go
zaprezentować przy pomocy paczki z którą nie wiedzieć czemu ale
automatycznie mi tego nie zaimponował więc zgłaszamy że taki błąd wystąpił i mamy
tutaj już naszą bazę danych co możemy z nią zrobić możemy kilka rzeczy z nią
zrobić ale uruchomimy najpierw ten kod i zobaczmy czy baza danych zostanie zrobiona
żeby to uruchomić musimy najpierw zacieśnić zmienną której nie używamy żeby
skomplikować nasz projekt jeśli uruchomimy nasz projekt powinniśmy zobaczyć.
Bazę danych która została stworzona
i widzimy że ona została stworzona jest ona pustym plikiem.
W tym momencie dlatego że nie mamy tam
żadnych tabel czyli najpierw musimy stworzyć sobie naszą tabelę w tym
projekcie będziemy tworzyć konto użytkownika będziemy następnie się do
niego logować i pobierać informacje o tym użytkowników.
Tak to pewnie się teraz domyśla aż musimy
stworzyć tabelę która to będzie nazywała się user i będzie to nasza struktura.
Musimy najpierw się zastanowić jakie
informacje o użytkowniku chcemy mieć w tej tabeli przechowywane Chcemy na pewno
przechowywać go jego imię chcemy przechowywać jego nazwisko.
I chcielibyśmy przechowywać jego hasło.
No i może jeszcze jego e-mail.
No i mają tego dane.
Chcielibyśmy to umieścić w bazie danych żeby umieścić coś w bazie danych
powinieneś wiedzieć jak działa baza danych SQL.
Ja nie będę tego tłumaczył.
Polecam zobaczyć inne dane które na pewno tłumaczą w jaki sposób ta baza działa
wspomnę jedynie że żeby stworzyć tabelę musimy mieć coś co się nazywa emeryci
czyli identyfikator za pomocą tego identyfikatora.
Możemy się odwoływać po nim do konkretnego
użytkownika i ten identyfikator jest unikalny.
Biblioteka nad jeziorem
nam to bardzo ułatwia dlatego że jeśli piszemy kropka ID model przepraszam bardzo
to na tym polu jeśli sobie wejdziemy do środka zobaczymy że mamy
identyfikator który jest typu end u różni się tym że
jest tylko i wyłącznie liczby powyżej zera łącznie z zerem czyli nie ma tam liczb
ujemnych przez co zakres takiej zmiennej jest dwa razy większy.
I tutaj jest górą dwóch kropek Prima czyli Ten identyfikator jest naszym primary
czyli jest on tworzony automatycznie jest unikalny w obrębie jednej tabeli dodaje.
Kiedy zostało stworzone kiedy zostało zaktualizowane i kiedy zostało to usunięte
więc tak mając takiego użytkownika musimy na bazie danych przeprowadzić migrację
w taki sposób musimy mieć najpierw naszą Database.
Odwołujemy się do niego i mamy tutaj dostępną metodę auto.
I ona przyjmuje nam listę interfejsów
które chcemy emigrować my chcemy emigrować naszych użytkowników i tutaj dobrą
praktyką jest to żeby mimo wszystko przekazać wskaźnik do tych użytkowników a
nie użytkowników podczas migracji oczywiście może wystąpić błąd.
Więc sprawdźmy czy błąd jest różny od
jeśli jest różny to wtedy wrzucamy aplikację dlatego że wtedy
koniecznie musimy zmienić te dane i uruchomimy nasz naszą aplikację.
Jak uruchomimy nasz projekt to okaże się
że pliku Database Visual Studio już nie może uruchomić
dlatego że nie wie w jaki sposób to zrobić aby zadbać i zobaczyć.
Jednak mimo wszystko jaka jest zawartość tego pliku trzeba przejść do Experience.
Tutaj jest taka zakładka Visual Studio KOD.
Jeśli wpisujemy tutaj SQL Lite i
przejdziemy do tego rozszerzenia to widzimy że to jest Explorer Database.
Wystarczy że zastosujemy to rozszerzenie a
następnie plik mamy dwa razy tutaj i to łatwe to niestety nie zadziała.
Musimy prawym przyciskiem myszy kliknąć i tu mamy takie pole open data.
Jeśli nie my to tutaj na dole pojawia się Excel Light Explorer.
Jeśli zginiemy zobaczymy że mamy tutaj plik i mamy tutaj tabelę Józek jak nie my
to play to po prawej stronie pokaże nam się że jest faktycznie.
Ale nasza baza Józek jest w tym momencie pusta.
Dobrze pozamykać te
niepotrzebne pliki i stwórzmy naszego pierwszego użytkownika aby stworzyć
użytkownika wystarczy że stworzymy naszą strukturę piszemy do środka naszą nazwę
nam dwóch kropek i to będzie nasza nazwa Las.
Tutaj również znajdujemy tę nazwę.
Hasło też jakieś ustawił piłkę
i e-mail również jakieś ustalimy ja z tego użytkownika musimy odwołać się
do debili dubbing insekty albo debil i kropka nad.
Tak i tutaj przekazujemy wskaźnik dla naszego użytkownika i klik.
Jak sobie wejdziemy do środka on zwraca coś co się nazywa manager zwraca nam
naszą bazę danych tak naprawdę więc w tym momencie w przypadku klienta nie
potrzebujemy nic obsługiwać żadnych błędów.
Stworzymy sobie np. imię Kamil.
Niech to będzie Kamil Nowak który nie ma
hasła i ma imię Kamil kropka Nowak i uruchomimy kod zobaczmy co się stanie.
Powiedzmy jeszcze raz do naszej bazy
danych i zobaczymy że został stworzony użytkownik o identyfikator 1.
Kiedy został stworzony dokładna godzina i imię nazwisko i jest e-mail i
nie ma hasła No dobrze mamy stworzonego użytkownika że komentujemy na później.
To teraz chcielibyśmy go pobrać
więc żeby go pobrać musimy stworzyć pustą strukturę użytkownika i teraz taki debil.
To oznacza że nasza baza pierwszego
użytkownika w tym przypadku będzie to user z tabeli.
I tu będzie rezultat.
I tu będzie ale musimy sobie obsłużyć ten błąd.
Załóżmy że chcemy w tym momencie wyrzucić
aplikację z tym błędem i tutaj w wyniku nie ma nic.
A powinno dlatego że to jest pierwszy akord który się zgadza.
Ok czyli w ten sposób.
Czyli to jest tylko i wyłącznie połączenie.
Więc nie potrzebujemy tutaj obsługiwać żadnych środków.
No dobrze to wybierzmy tego użytkownika czy on został faktycznie pobrany.
Zostawmy to projekt żeby zobaczyć czy faktycznie tu jest ten użytkownik.
No i się zobaczymy.
Józek Kamil Nowak pisze użytkownik z bazy danych identyfikator to jest jeden.
Aby pobrać np.
użytkownika o danym specyficznym imieniu to musimy zrobić DVI kropka Find czyli
znać tutaj podajemy z jakiej tabeli czyli możemy tutaj podać małpa user
on user i on nam wtedy wpisze tego użytkownika do tego modelu i po przecinku
musimy podać jakie jest wymaganie że przecinek pacjenta podpowiedź to jest
kąt czyli kąt 1000 i w tym miejscu wpisujemy
nam ma się równać coś i to coś podajemy jako po przecinku.
I tutaj możemy podać np.
że to ma być Kamil.
Jeśli sobie komentujemy klinikę to w
przypadku funkcji Find on nam to znajdzie za pomocą specyficznych wymagań.
Czyli to jest można powiedzieć że taki strzelec.
Po uruchomieniu
nic się nie wyświetli dlatego że nic nie miało nie wyświetlić Holmes break point.
Zobaczmy że użytkownik w tym momencie jest pusty.
Użyjemy tutaj step over czyli like dalej i zobaczymy że ktoś nam
wypełnił użytkownika z imieniem Kamil to teraz zmieńmy to np.
na Kamil 2.
Bo wiemy że takiego użytkownika tutaj nie
ma uruchomimy to jeszcze raz przeskoczy o 1 stop dalej
i zobaczymy że użytkownik dalej jest pusty czyli nie ma naszego Kamila
w takim razie skoro wiemy już jak pobierać pierwszy akord wiemy już jak znajdować po
konkretnym polu to teraz sobie usunie dane jako czyli po prostu Digital
user czyli w tabeli tak naprawdę chcemy usunąć i po przecinku podajemy
identyfikator czyli ten identyfikator który jest tutaj.
Czyli to jest to id unikalne ID dla danego użytkownika.
Weźmy sobie do plików w tabeli i zobaczmy jaki identyfikator ma nasz Kamil.
Kamil ma identyfikator 1 w takim razie
piszemy tutaj 1 po czym my nasz i zobaczmy co się stanie.
Program zakończył działanie dlatego powinien zostać użytkownik usunięty.
Zapytamy i zobaczymy że dalej ten użytkownik istnieje.
Dalej mamy Kamila dalej mamy jego nazwę i jej nazwisko ale zobaczymy że pole dalej
cytat jest wypełnione jak on został stworzony o dziesiątej 33.
Został usunięty dziesiątej 37.
No dobrze skoro mamy już pobieranie użytkownika i mamy też usuwanie
użytkownika to spróbujmy zaktualizować coś w tym użytkownikom więc tak piszemy
i kropka Update i musimy powiedzieć jakie pole Chcemy zaktualizować czyli np.
nie mamy już Kamila ale Chcemy zaktualizować nam Karol.
Tylko że tu musimy powiedzieć to podać po
przecinku i mamy że Chcemy zaktualizować pole nam jako kamienie Karol
ale musimy jeszcze powiedzieć w jakiej tabeli chcemy więc musimy tutaj napisać
model i tu powiedzieć że to ma być z tabeli Józek.
Tutaj wskaźnik tych którzy nie mamy w tym momencie
żadnego użytkownika który możemy zaktualizować imię jako Karol
podajemy pusty użytkownik więc nie wie w jakim użytkowniku ma to zaktualizować
więc musimy stworzyć użytkownika po raz kolejny nowego użytkownika możemy po raz
kolejny naszego Kamila albo zmienimy Janek KOD.
I zobaczymy że ta zmienna nie jest nowa więc komentujemy.
Po uruchomieniu zobaczymy w bazie że mamy drugiego użytkownika który
ma Digital Avenue i jest to nasz Janek Nowak który ma e-mail dokładnie taki sam.
Nie tworzymy nowego użytkownika więc tak komentujemy to do komentowania służy
Command głośnik i aktualizuje nowego użytkownika.
Najpierw musimy podać tutaj faktyczny
identyfikator czyli stwórzmy naszego Janka czyli nasz Józek to będzie
Józek User ID nasz identyfikator Janka to jest 2 piszemy dwa i Chcemy zaktualizować.
To będzie Karol od tego momentu
przekazujemy wózek i zobaczymy tutaj po prawej stronie.
To nie mamy już Janka tylko mamy Karola to jest jeden sposób na aktualizację danych.
Drugim sposobem aktualizacji jest model.
I tutaj podajemy nasz Józek.
Tematyce i służy to do tego że możemy
zaktualizować tak dużo płyt jak chcemy czyli
kupimy je z powrotem od komentujemy ten identyfikator i załóżmy że chcemy ustawić
z powrotem imiona Janek chcemy zmienić załóżmy im jednak na Jan Nowak
i to będzie Jimmy Coca-Cola i Chcemy zaktualizować mu hasło 1 2 3
i to przekazujemy naszego lotniska i uruchamiamy KOD.
Jak wejdziemy do naszej bazy danych z powrotem to zobaczymy że z powrotem jest
to Janek ma już ustawione hasło i jest to Jan Nowak.
Czyli wiemy już jak aktualizować dane w
bazie danych jak usuwać jak znajdować użytkowników po konkretnych polach.
Jeśli chodzi o znajdowanie identyfikatora to it.
I tutaj podajemy identyfikator więc to jest dokładnie w ten sam sposób.
Wiemy jak pobierać pierwszego użytkownika i wiemy jak tworzyć.
Więc jeśli chodzi o podstawową obsługę baz
danych używając biblioteki czy no to i zapraszam do następnej lekcji.