Cezary Walenciuk Programowanie

Start Początki programowania nie są łatwe. Ja, chociaż chciałem zostać programistą, od kiedy miałem 5 lat to miałem problemy ze zrozumieniem jak działają pętle i warunki logiczne w Pascalu. Tak, technicznie Pascal na studiach był moim pierwszym językiem programowania. HTML i CSS w liceum się nie liczy. 

Jak więc zacząć programować? Z

tego, co widzę po ruchu na moim od czasu do czasu ten wpis na temat porady jak zacząć programować w .NET jest często wyświetlany.

Kto by nie chciał mieć instrukcji jak zacząć swoją przygodę w programowaniu. Jaką książkę kupić? Jaki kurs na Udemy kupić za 20 zł? 

W jakim języku programowania się zakochać i potem szukać pracy tak, aby to cieszyło.  Jakie technologię pod ten dany język trzeba poznać, aby było dobrze.

Ja zakochałem się w C#? Naturalnie jako osoba, która programuje w C#  już prawie 10 lat zawodowo uwielbiam ten język programowania i go polecam. Jednakże wcale to nie znaczy, że nie ma z nim pewnych problemów. Sama platforma .NET też nie jest taka oczywista. 

Ten wpis może mnie kopnąć w przyszłości, ale będę z tobą szczery C# i jak platforma .NET ma swoje krzaczki i nie jest taka beginner friendly jakby się mogło wydawać.

CSS Ultra krótki wpis. Swagger UI jest dołączany domyślnie do aplikacji ASP.NET CORE i mnie to nie dziwi, gdyż tworzy on super formatkę do twojego REST API, która może służyć do testów, jak i do dokumentacji.

Zrobiłem o tym osobny wpis. A w tym wpisie właściwie to Ciebie tylko przekieruje do pliku CSS, który utworzy tryb ciemny w Swagger UI.

Jupyter Czym są te interaktywne notatniki? Dlaczego ostatnio jest o nich głośnio? Dlaczego ta moda doszła do środowiska .NET? Zacznijmy od początku. Interactive Notebooks i rozwiązanie Jupyter zaczęły swoją przygodę w środowisku Python.

Python to fantastyczny język programowania do tworzenia sztucznej inteligencji i pięknych wykresów. Ktoś pomyślał, że fajnie by było tworzyć interaktywne dokumenty, które będą zawierać kod, który wygeneruje coś na tym dokumencie.

Dlaczego ta moda doszła do środowiska .NET? C# nie jest na razie językiem programowania stworzonym do pisania sztucznej inteligencji, czy tam do tworzenia kolorowych wykresów, ale Microsoft chciałby, aby tak było w przyszłości.

Tak C# jako drugi Python. W końcu chcemy, aby C# stał się popularny wśród wielu programistów.

RememberCzęść NR.13 W poprzednim wpisie omówiliśmy techniki z programowania funkcyjnego jak Precomputation i Memoization. Pytanie, jak te techniki mają się do kodu w C#, który jest asynchroniczny i opiera się na obiektach takich jak Task, które symbolizują w C# przyszłość.

Jak się domyślasz Memoizacja może być bardzo utrudniona. W poprzednim wpisie nawet zaznaczyłem, że same słowniki Dictionary nie są wielowątkowo bezpieczne.

Trzeba by było korzystać z innych słowników, które są bardziej bezpieczne jak ConcurrentDictionary

A co z Precomputation? Nie wiem czy wiesz, ale sam obiekt klasy Task wspiera tą filozofię aby nie wyliczać ponownie czegoś co już zostało zrobione.

Interactive Okno, które daje możliwość pisania interaktywnego kodu w C# nie jest czymś nowym w .NET. Jednak zawsze brakowało czegoś co dało efekt wow.

Bądź szczerzy, ale umiejętności pisania kodu w konsoli to fajny bajer do powalenia na kolana innego programistę.

dotnet-reply , który domyślnie korzysta z Specter.Console pozwoli taki efekt tobie zrobić.

MemoryCzęść NR.12 Komputery są dobre w zapamiętywaniu rzeczy. Gdy patrzysz na jakąś aplikację biznesową to zapewne nie jesteś zafascynowany tym, co ona może wyliczyć, ale co ona może zapamiętać. To główny cel naszych aplikacji wyświetlić wcześniej zapamiętane dane. 

Gdzie te dane są? W plikach, w bazach danych? 

Witaj w kolejnym wpisie z kursu programowania funkcyjnego w C#?

To niesamowite jak długo prowadzę ten cykl. 

W programowaniu funkcjonalnym koncentruję się na wykonywaniu samych funkcji niż na przetrzymywania stanów pośrednich. Funkcje w programowaniu funkcyjnym mają być czystymi funkcjami.

Funkcyjne programowanie polega na uniknięciu ukrytych wejść i wyjść jak:

  • Używanie Wyjątków, aby kontrolować przepływ programu
  • Funkcja nie modyfikuje stanu
  • Funkcja nie trzyma referencji do obiektu, który miałby być zmieniony
  • Funkcja nie zapisuje czegokolwiek w polach statycznych

Z drugiej strony pamiętanie stanów jest częścią aplikacji. Zawsze gdzieś będzie warstwa dostępu do danych. 

Mamy jednak kolejne ciekawe założenie programowania funkcyjnego. Zakłada ona, że raz wyliczona nie powinna zostać wyliczana ponownie. Możemy też założyć, że raz pobrana rzecz z bazy danych nie powinna być także odczytana ponownie do jakiegoś limitu czasu.

Czyli mówimy o Cache w naszej aplikacji o możliwości pamiętania tego, co już zrobiliśmy wcześniej, aby nie robić czegoś ponownie z takim samym rezultatem.

Mamy dwa style zapamiętywania rzeczy i omówimy je w tym wpisie.

Tokens Dziś na swoim fanpagu "JakProgramować" dostałem wiadomość, aby komuś pomóc jak napisać prostą aplikację, która ma wydzielone UI i REST API. Dodatkowo chcielibyśmy wykorzystać zasady Clean Architecture w tym projekcie tak, aby nasze warstwy były elastyczne. 

W sumie mam na ten temat mnóstwo prezentacji i prelekcji.

Jednak nie mam wpisu na ten temat. Postanowiłem wiec wyjąc aplikację demo, którą napisałem na prelekcję Warszawski Dni Informatyki. Omówimy więc taką aplikację i dodatkowo zastosujemy autoryzację przy pomocy JSON Web Tokenów.

Nawet taki krótki projekt wymaga dwóch wpisów. W tym wpisie skupię się na części Serwerowej, a w drugim napiszemy klienta Blazor, który przeczyta i sprawdzi ten token.

Samuraju, oto opis tej prelekcji do kodu demo:

AddOpinionNr: 4 Poprzednich wpisach stworzyliśmy API Sklepu Smoków i ją odczytaliśmy w innej aplikacji ASP.NET CORE. Na razie jednak nasze API GraphQL ma zapytania, które odczytują dane.

Jak wiadomo API powinno nie tylko odczytywać dane, ale także je zmieniać.

NUKE Umieszczanie aplikacji na środowiskach i ich kompilacja zazwyczaj nie są problemami programistów. 

Od tego są inni pracownicy, którzy mają tam swoje Jenksins-y i tym podobne narzędzie służące do automatyzacji budowania, testowania, i wdrażania aplikacji na środowiska testowe. Jenkins to jeden z najpopularniejszych systemów CI/CD. A co to jest ten CI/CD?

To skóry oznaczające odpowiednio Continuous Integration i Continuous Delivery.

Continous integration : ciągła integracja polega na tym, że zespół programistów wprowadza zmiany w kodzie, te zmiany przechodzą przez testy, po czym są one późnień integrowane z innymi zmianami i są one umieszczane np. do środowisk testowych.

Continuous Delivery : czyli ciągle dostarczanie polega na przygotowaniu struktury serwerowej, aby nasze zmiany się znalazły na środowiskach testowy albo nawet na produkcji.

Istnieje jeszcze inne pojęcie jak Continous Testing, które mówi o ciągłym testowaniu albo przez automaty, albo przez ludzi.

Wszystkie te filozofię mówią o zwiększaniu jakości kodu i procesu wdrażania poprzez zwiększenie ich częstotliwości, a żeby zwiększyć częstotliwość scalania zmian w kodzie i jego testowania to trzeba ten proces jak najbardziej jest to możliwe zautomatyzować.

Zazwyczaj programiści się tym nie interesują, bo bądźmy szczerze to nie jest na twojej głowie, jakie komendy CMD są odpalane i  czy to jest PowerShell, czy innym język jak BASH aby twoje zmiany przeszły przez tą rurę procesów aby w końcu trafić na inne środowisko testowe albo nawet produkcyjne.

query={}Nr: 3 W poprzednich dwóch wpisach stworzyliśmy proste API w GraphQL. Widzieliśmy jak odpytywać nasze API specyficznym JSON-em w GraphQL Playground. Jak to jednak wygląda w prawdziwej aplikacji? Jak wygląda taki gołe polecenie HTTP POST czy HTTP GET?

Czym jest dokładnie zapytanie w GraphQL. W kontekście pisania aplikacji GraphQL zapytanie można tworzyć w definicji Schema. Ono dziedziczy po ObjectGraphType.

Dla klienta "zapytanie" to specyficznym zapis polecenia w formie JSON? Dzisiaj się na tym skupimy.  O ile jestem fanem rozwiązania Swagger , który generuje formatkę do testowania REST API. To w tym przypadku dla GraphQL potrzebujemy oddzielnego programu lub aplikacji aby GraphQL przetestować. Gdy zrozumiemy jak się odpytuje GraphQL API poleceniami POST i GET, wtedy napiszemy swoją stronę w ASP.NET Core, która odczyta nasze napisane w poprzednich wpisach API.

Serilog Na tym blogu mam serię artykułów, które opisują fajne biblioteki NuGet dla ASP.NET CORE. Dziś spojrzymy na Serilog. 

Logowanie błędów informacji jest kluczowe. Mam nawet wpis o tym, jak użyć NLoga w ASP.NET CORE i obecnie go używam na swoim blogu, aby od czasu do czasu sprawdzić jakie błędy w nim są.

Bez logowania nie znalazłbym uszkodzonych wpisów, które w wyniku złego formatowania HTML wyrzucały wyjątek.

Dlaczego Serilog, a nie coś innego? Najważniejsza różnica pomiędzy Serilog a innym frameworkiem do logowania jest fakt, że ta biblioteka ma wybudowany tryb strukturalnego logowania. Każdy element Serilog jest paczką, którą można dodać aby go rozszerzyć.

Serilog też może być skonfigurowane za pomocą appsetting.json. Czyli nie zmieniamy kod aby zmienić styl logowania aplikacji. NLog miał natomiast swoją własną konfigurację w oddzielnym pliku XML co możesz uznać za wadę.

Dlaczego jest to takie ważne? W świecie Kubernetesa i Dockera możesz też potem te konfigurację zmieniać w zależności od środowiska

Problems? To normalne, że w domenie chmury i aplikacji HTTP każdy serwis wzajemnie się odpytuje. Jak to robimy w .NET ? Poprzez klasę HTTPClient.

Jaki jest problem z HTTPClient?  To pytanie często wraca jak bumerang. W trakcie pisania aplikacji, a nawet na rozmowach kwalifikacyjnych. 

Pamiętam jak raz w pracy na ten problem kazali mi po prostu zainstalować paczkę NuGet "Flurl", która otacza HttpClienta i nie myśleć o tym, jakie on powoduje problemy.

Potem wiele miesięcy później zostałem postawiony przed pytaniem, dlaczego trzeba uważać na HTTPClienta w .NET i nie miałem na to dobrej odpowiedzi.

Myślisz sobie przecież to proste. Chce wykonać zapytanie HTTP do strony internetowej to co tworzę sobie instancje HTTPClient i wykonuje zapytanie. 

Zobaczmy co się stanie, gdy utworzę 20 instancji HTTPClient, który ma odpytać moją stronę.

GraphQLNr: 2 W poprzednim wpisie stworzyliśmy podstawowe API w GraphQL. Nasz sklep smoków jest na chwilę obecną bardzo prymitywny. Nasza smok nie zawiera w sobie złożonych typów. Nie zastosowaliśmy wzorca "Data Loader" w GraphQL, aby utrzymać strukturę zapytań. Na razie nasze API w sumie obsługuje tylko jedno zapytanie. Pobierz wszystkie smoki, które są na sprzedaż.

Jak dodać parametry do naszych zapytań w GraphQL?

Jak dodać autoryzację do swojej Schema.

Rozbudujmy więc nasze api.

GraphQLNr: 1 Co to jest GraphQL? Czyli jak można jeszcze lepiej zrobić Rest API? GraphQL został wymyślony aby osiągnąć lepszą elastyczność i efektywność pomiędzy interakcjami klient / serwer.

GraphQL w esencji jest językiem zapytań do twojego HTTP API. Warto zaznaczyć, że GraphQL jest tylko nakładką do twojego API, a raczej używając języka ASP.NET Core jest to Middleware.

To nie biblioteka, to nie produkt, to nie baza danych.

Ta nakładka jest alternatywą do tworzenia Rest API. Zobaczmy na rysunkach w czym jest problem i co rozwiązuje GraphQL.

GrapQL polega tym, że wysyłasz do klienta polecenie HTTP POST albo GET. W treści tego polecenia jest JSON, które informuje API co chcesz zrobić.

Czyli jeśli chcesz listę produktów to nie szukasz odpowiedniego adresu i metody w REST API. Zastanawiasz się jak napisać zapytanie w JSON aby tą listę produktów pobrać.

Middleware Na tym blogu były już artykuły na temat AutoMapper, Swagger UI, IServiceCollection. Co jeszcze jest potrzebne do aplikacji ASP.NET Core.

W sumie to jest to coś na czym złapałem się na swoich webinarach. Przechwycenie wyjątków w każdej metodzie Controler-ów wydaje się głupie. Napisanie kodu, w który nie wystąpią wyjątki jest niemożliwe.

Gdzie powinniśmy je przechwytywać tak, aby zapisać je później do logów.

Na pomoc przychodzi Middleware, który także rozwiązanie inny problem. W końcu wypadałoby przechwytywać wyjątek w jednym miejscu. Nie może być tak, że przechwytujesz wyjątek 5 razy i wyrzucasz go dalej.

_private Krótka piłka. Zapewne wiele razy pisałeś pola prywatne w C#. Większość standardów mówi, że pole prywatne powinno być pisane w stylu camelCase oraz powinno zaczynać się od podkreślenia (underscore) _camelCase.

Pole prywatne zazwyczaj są stosowane we wstrzykiwaniu zależności. Dlatego chcielibyśmy w ich nazwach odróżniać je od nazwy parametru w konstruktorze.

Tak aby nie pisać takiego kodu :

Onion Napisać aplikację to jedno. Wdrożyć to drugie. Tylko jak później tę aplikację utrzymać i ciągle zmieniać?  Dodawać nowe funkcje, poprawiać błędy, zmieniać istniejącą logikę biznesową.

Można by powiedzieć, że to jest największa zmora programowania. W końcu każdemu zdarzyło się chociaż raz powiedzieć lub pomyśleć

"Ta aplikacja to takie gówno, że szybciej bym napisał lepszą od zera".

Czasami jak czas i pieniądze pozwolą, tak się dzieje. Piszemy aplikację drugi raz, bo poprzednia wersja jest Behemotem.

Flow Statyczne metody. Dla początkującego programisty z krótkim stażem pracy są one cudowne. W sumie to kiedyś ten blog napisany w .NET miał wiele klas statycznych i dużo pomocniczych metod jak np. skróć mi URL, skróć mi treść wpisu, wstaw mi obrazek, usuń mi Polskie znaki, wygeneruj mi tabelkę HTML i tak dalej i tak dalej.

Jaka jest najważniejsza zaleta metody statycznej.

Możesz wywołać metody statyczne wszędzie. W każdej klasie, widoku Razor cshtml. Jest to wygodne. Nie musisz robić wstrzykiwania zależności. Nie musisz tworzyć instancji klasy, aby skorzystać z danej metody.

EventDriven CQRS to jeden z najczęszczych wzorców projektów przy budowaniu aplikacji ASP.NET CORE. Fundament polega na oddzieleniu kodu, który odczytuje dane (Query) i na kod który te dane modyfikuje (Command).

Jeśli znasz operacje Create-Read-Update-Delete, to pomyśl o Query jako zapytaniach Read, a Command jako modyfikację, które Tworzą-Aktualizują bądź kasują dane.

Biblioteka MediatR, którą opisałem wcześniej, wspaniale przyspiesza pisania aplikacji CQRS z małym dodatkiem wzorca projektowego Mediator. Oczywiście stawiając pierwsze kroki z aplikacją CQRS, można popełnić błędy. Pamiętam jak ktoś, na moim pierwszym webinarze na temat CQRS zapytał wprost, czy Command może uruchomić kolejny Command.

Oczywiście jest to kiepski pomysł

Install Gdy aplikacja ASP.NET Core jest duża lub jest rozbita na wiele małych kawałków to wtedy warto zastosować wzorzec IServiceCollection. 

Pozwala to tobie rozbić definicje wstrzykiwania to kolejnych serwisów do osobnych klas bądź projektów w solucji. Pisząc złożoną aplikację ASP.NET Core, w którym momencie twoja klasa startup.cs urośnie.

Dlatego pisanie takich swoich rozszerzonych metod wydaje się nieuniknione. Spójrz na ten kod

Sort Files Czy wiesz, że istnieje język skryptowy AutoHotkey (AHK Script), który służy do pisania zautomatyzowany akcji na danym komputerze. Dzięki nie mu możesz na przykład podpiąć daną akcję na skrót klawiszowy. Otwierać swoje ulubione foldery pod F7. Zablokować ALT+F4.

Dodatkowo modyfikować zawartość schowka kopiuj/wklej.

Na przykład modyfikować tekst z tabulatorami tak, aby była to ładna tekstowa tabelka. 

Ponownie otworzyć zamknięte wcześniej aplikacje. Automatycznie przerzucać pliki z 1 folderu do drugiego.

AHK Script to potężne narzędzie. Z ciekawości przejrzałem te wszystkie skrypty i wybrałem 1, który rzeczywiście dla mnie jest użyteczny i od ponad 3 miesięcy działa w tle. Może, kiedy przepiszę go na Pythona czy C# na razie  AHK Script zdaje egzamin, jeśli chcesz pisać szybko takie skrypty.

BlackScreen Zainstalowałeś OBS. Chcesz udostępnić swój monitor poprzez "Display Capture" i masz czarny ekran. O co chodzi? Jak to naprawić?

Do mnie też ten problem wrócił, gdy zainstalowałem system Windows 10 od nowa. Swoją drogą wszystkie pluginy z OBS zachowałem, ponieważ zrobiłem bezpośrednią kopię całego programu 

Z czego ten problem z czarny ekranem wynika. Dotycz on użytkowników, którzy mają 2 karty graficzne, które są zintegrowane. Jedna z nich zajmuje się grami/programami druga twoim pulpitem w systemie Windows.

OBS, gdy chce rzutować ekran, to korzysta ze złej karty graficznej. Trzeba powiedzieć OBS, aby korzystał z kart graficznej odpowiedzialnej za pulpit/ekran twojego komputera.

Przejdźmy więc do rozwiązania

AlphaBoard Tradycyjna tablica nie bardzo się sprawdza z prezentacji OnLine. Jak się domyślasz problemem jest światło, które na tą tablicę niezbyt dobrze pada i słabo to widać na kamerze.

Ktoś wymyślił genialny sposób. Aby pisać po specjalnym szkle, które jest przezroczyste i odpowiednio odwraca napisane wzory dla publiczności.

Pisanie po szklanej tablicy, która świeci Neonem na potrzebę webinarów czy LIVE stream-ów nie jest niczym nowym. Ten wynalazek istnieje od 2015 roku. Fachowo takie urządzenie nazywa się "LightBoard".

SoundNarzędzie NR.20 Staram się używam najlepszych narzędzi do robienia webinarów. StreamYard w połączeniu z OBS daje radę, ale nawet tutaj można coś ulepszyć. Na swoich webinarach programistycznych lubię puszczać dźwięki z Gothica, Warcrafta 3, Windows 98, Diablo 2 oraz Heroes 3.

Pod koniec webinaru lubię także puścić na koniec fajną muzyczkę, która nie ma praw autorskich, żebym nie miał problemu.

Tutaj pojawia się prosty problem.

O ile używając TouchPortal jestem w stanie puszczać krótkie dźwięki pod danych klawiszy to oczywiście jakoś takie dźwięku jest beznadziejna. W końcu idzie on przez mój laptop do mojego mikrofonu.

Trzeba więc programu, który doda do kanału "mikrofonu" bezpośrednie odpowiednie dźwięki.

Taki program oczywiście istnieje i nazywa się SoundPad.

GamePad Wszystko zaczęło się od Świąt Bożego Narodzenia gdzie w końcu mogłem znaleźć trochę wolnego czasu, aby sobie pograć. W końcu pomyślałem, że może zagram w sobie "Beyond good and evil". Chciałem w tą grę zagrać od 2003 roku. Kupiłem więc wersje HD na Steam i zainstalowałem pewne MOD-y, aby gra wyglądała ładnie nawet w roku 2021.

Pojawił się jednak pewien problem.

Ta gra na PC nie wspiera żadnych padów na PC. A przynajmniej tak było w tamte święta.

Moim zdaniem nawet gra z 2003 roku powinna obsługiwać pada. Pamiętaj jak grałem w "Prince Of Persia Warrior Within" na padzie, a to jest gra o podobnym sterowaniu i z roku 2004.

Tak zaczął się moje zadanie w poszukiwaniu, jak najtańszego i najlepszego rozwiązania tego problemu. Swoją drogą też zapaliła mi się lampka.

Gdyby mój pad bezprzewodowy XBOX ONE był wystanie ruszać się jak myszka to mógłbym grać : "Heroes 3" czy "Civilization 6" na ekranie swojego telewizora 4K siedząc na kanapie.

Jestem mega fanem bezprzewodowych padów XBOX ONE. Jako kolekcjoner starych konsol kiedyś zaznałem tego, co to znaczy utonąć w kablach.

Samo mapowanie pada na myszkę mogło, by mieć także swoje zastosowanie biurowe. Jak więc to zrobić i ile mamy opcji. Zacznijmy od najgorszych.

Mediator Ostatnio zrobiłem webinar na temat budowania aplikacji w C# od zera. Skoncentrowałem się na dobrych praktykach oraz na najlepszych paczkach NuGet, które obecnie są w ofercie dla C# i dla .NET. 

MediatR na pewno jest w pierwszej piątce najlepszy paczek Nuget.

MediatR pomaga Ci szybko napisać aplikację przy pomocy wzorca projektowego mediator oraz zastosować CQRS. 

Validate Nasze aplikacje ASP.NET CORE coraz częściej są tylko aplikacją REST. To oczywiście wymaga Walidacji po stronie klienta i po stronie serwera.

Jak taką walidację jak najszybciej zrobić. Może przecież sam napisać takie warunki, ale przy dużej ilości klas, które występują jako parametry mija się to z celem. 

Możesz też skorzystać z atrybutów i oznaczyć reguły do każdej właściwości.

Co, jeśli chcesz oddzielić logikę walidacyjną od samej klasy. Nie zastąpi to oczywiście dodawania adnotacji do encji w Entity Framework. Mówimy tutaj tylko przesyłaniu danych do serwera.

FluentValidation idzie Ci z pomocą. W tym wpisie też zobaczymy jak FluentValidation współpracuje z Swagger UI.

Swagger Programiści codziennie tworzą jakąś aplikację sieciową typu REST. Teraz nastaje pytanie, jak najlepiej zrozumieć jak dane API działa. Do tego mamy dokumentacje, ale jeśli pracujesz w szybkich, zamkniętych projektach to takiej dokumentacji może nie być.

Potem ktoś dziedziczy projekt i nie wie na co on patrzy.

Wypadałoby znać wszystkie metody, klasy typy zwracane, argumenty w danym API. Dołączyć do tego możliwość szybkiego uruchomienia danej metody z przykładami.

RunRada 4 W pod koniec roku 2017 zacząłem ćwiczyć. Proste ćwiczenia rzeczywiście robią różnice, gdy masz siedzący tryb życia. A co z bieganiem ?

Pamiętam jak pierwszy raz na bieżni nie byłem w stanie wytrzymać 5 minut normalnego spaceru. Powoli z tygodnia na dzień zacząłem sobie stawiać wyższe progi i tak odkryłem, że o ile jest to na początku bolesne to jak twoje ciało da Ci te endorfiny to już...aż chce się biegać więcej. 

Zobaczyłem wtedy pierwsze efekt. Zdarzyło mi się gonić autobus lub pociąg i po 40 sekundach być zdyszany. Teraz spokojnie dawałem radę zrobić taki szybki sprint.

NLog Logowanie działania aplikacji. Jak wiedzieć w końcu, gdy coś nie działa. Mój blog jest napisany w C# i działa po ASP.NET CORE. Jak to jednak bywa z napisaną przez siebie aplikacją pojawiają się błędy więc do bloga dodałem mechanizm logowania błędów. W taki sposób znalazłem wiele dziwnych przypadków uszkodzonych wpisów w formacie XML, które rozwalały Parser. Znalazłem też złe zbudowane przez ze mnie lista kursów. 

Poza tym w logach też widziałem jak ktoś próbował się nie raz włamać na bloga o 4 rano.

Logi są potrzebne nawet do taki projektów. W kontekście aplikacji produkcyjnych logi często są ostatnią deską ratunku, aby stwierdzić co nie działa dla pewnego dziwnego przypadku.

Transform W tym  artykule zobaczymy jak zintegrować AutoMapper  z ASP.NET CORE dla .NET 5, chociaż bądźmy szczerzy możesz skorzystać z tej biblioteki w każdym projekcie w C#.

Co to jest AutoMapper i jakie one problemy rozwiązuje ?

Zaczynamy zabawę mój czytelniku

ArchitectureNr 3 Wiesz jak już w Dockerze robi obraz do różnych frameworków i do różnych języków programowania. Jeśli nie to zawsze możesz przeczytać poprzedni wpis.

Docker potrafi zarządzać obrazami i kontenerami, ale dla zaawansowanych aplikacji i dla prawdziwych firm może to być za mało.

Dlatego powstał Kubernetes?

Coraz więcej rzeczy idzie do chmury. W chmurze możesz utworzyć serwer zainstalować na nim system operacyjny jak Windows czy Linux i przy pomocy niego zarządzać zasobami każdej aplikacji 

W chmurze Amazon,Azure, Google także możesz zainstalować Kubernetes, który zrobi to wszystko 1000 razy lepiej. 

HymnNarzędzie NR.18 Jak jeszcze lepiej ulepszyć system operacyjny Windows.

Czy być może programy tobie, które za chwilę to śmieci, które nie będą ci potrzebne?

Zazwyczaj w tym cyklu pokazuje programy, z które moim bardzo zmieniają przepływ mojej pracy.

Tym razem jednak zastanów się czy potrzebujesz takich programów, bo są one w większości przypadków sytuacyjne.

DockerFileNr 2 W tym wpisie stworzymy masę obrazów Docker do różnych środowisk i do różnych języków programowania. Na razie zapomnimy o Kubernetes. Zajmiemy się nim w następnym wpisie.

W poprzednim wpisie utworzyliśmy prosty obraz docker, który zawierał tylko statyczne pliki. Uruchomiliśmy go i tyle.

Oczywiście zabawa z Docker nie kończy się tutaj. Wróćmy do polecenia tworzenia obrazu  :

Flattern W tym wpisie zobaczymy użycie metod SelectMany w LINQ. 

SelectMany w pewnym sensie jest odwrotnością GroupBy. GroupBy bierze jedną kolekcję i transformuje to odpowiednio na kolekcje, w której elementy mają swoje swoją kolekcję.

Natomiast SelectMany spłaszcza takie kolekcje w kolekcji do jednej scalonej listy elementów

Ponownie wyobraź sobie, że mamy kolekcje wpisów na bloga. Tym razem jednak mamy także definicję samego bloga. Będziemy mieć dwa blogi o przemawianiu i o programowaniu.

Group By Jak więc GroupBy w LINQ grupuje dane w C#. Zacznijmy od podstaw, a potem spójrzmy na zaawansowane przykłady. 

Group By pozwala na szybkie grupowanie kolekcji połączony ze sobą danych poprzez określoną właściwość. 

Pogrupowane dane staje się osobną kolekcją, które nie są zazwyczaj typem anonimowy, a interfejsem generycznym IGrouping<K,V>

Do przykładu potrzebujemy jakiegoś modelu. Oto model wpisu na blogu.

9.0 W listopadzie 2020 pojawiły się .NET 5 i C# 9.0 . Z ciekawości Ci powiem, że zdarzyło mi się mieć rozmowy kwalifikacyjne na temat C# 9.0 już tydzień po premierze więc czytanie o nowościach języka nigdy nie wiesz, kiedy może Ci się przydać. 

Zmotywowało mnie to do zrobienia webinaru na ten temat.

Miałem też inną rozmowę, na której dwaj architekci oczekiwali ode mnie napisania "Pattern Matching" z buta.  Trzeba przyznać, że jest to ciekawy problem, ponieważ w firmach pisanie kodu w najnowszych technologiach jest niesamowitym luksusem. Dlatego nie dziw się, jeśli ktoś nie wie co pojawiło się w C# 8.0 albo C# 7.0 ?

C# 9.0 ma nowego? Najważniejsze nowości to rekordy i rozwinięcie możliwości Pattern Matching. Przejdźmy jednak po kolei do każdej nowości języka C#?

ChoiceSerce NR.9 Oglądałeś, kiedy wstęp do filmu "Idiocracy" (Idiokracja). W nim biedni i patologicznie ludzie rozmnażają się na potęgę, a osoby z klasy średniej zastanawiają się 10 razy czy to jest dobry moment na posiadanie dziecka.

Czasem nawet czekają zbyt długo...i nic z tego nie wychodzi.

Istnieje w tym pewny szczypt prawdy.

W końcu biedni ludzie, jakie mają inne rozrywki czy marzenia. Samorealizacja i dążenie do własnych celów to dla niektórych ludzi luksus. 

Gratuluję znalazłeś więc dobrego partnera. Jesteś albo kobietą i mężczyzna i czytasz właśnie ten wpis i poznałeś/poznałaś wspaniałego partnera. 

Jest to tak dobry związek, że można śmiało myśleć o ślubie, mimo iż zapewne na oglądałeś się filmików na YouTube na temat MGTOW, Red Pill, Black Pill oraz feminizmu. Jak to wartości rodzinne przestają istnieć.

Nie ma nikogo przynajmniej w Internecie kto by te wartości przekazywał. Teraz tylko logować się na OnlyFans i mieć wirtualne związki jak usługę, którą można włączyć i wyłączyć.

Możesz się śmiać, ale w Japonii można wynająć sztuczną rodzinę, która poudaje, że jest z Tobą przez dzień.

2020 Jeśli chodzi o podsumowania bloga to ostatnie robiłem w styczniu 2016 roku. Dużo się od tego czasu się zmieniło.

W roku 2020 wróciłem do swojej strony internetowej. Miałem dwuletnią przerwę w tworzeniu wpisu na bloga. Nie ma co ukrywać, ale czasem w życiu są ważniejsze rzeczy.

Statystki Google Analytics pokazują brutalna prawdę faktu, że większość wpisów na tym blogu się zestarzała. Chociaż Kurs C# nadal się trzyma. Ktoś mógłby powiedzieć, że ten blog programistyczny tonie. Tak mogłoby być, gdyby coś z tym nie zrobił.

Do strony wprowadziłem wiele zmian. Oto one:

W roku 2020 zrobiłem migrację bloga z ASP.NET MVC do ASP.NET CORE 3.2. Strona dzięki temu dostała ciekawy algorytm kompresji każdego zapytania HTTP.

Poprawiłem stronę główną, która przez wiele lat wyglądała tak:

HouseZarobki NR.6 Od jakiegoś czasu chciałem napisać ten wpis. Tak kupiłem mieszkanie w maju 2019 roku na Mokotowie w Warszawie. Jak to zrobiłem ? W skrócie to moja dziewczyna szukała przez rok mieszkań w tym regionie i przy okazji pokazała mi fajną ofertę mieszkania. Później szukaliśmy odpowiedzi czy można było kupić mieszkanie taniej i odpowiedź brzmi nie.

O ile były pogłoski, że mieszkania mają stanieć to wraz z rokiem 2020... COVID pokazał coś innego i mieszkania wcale nie staniały w Warszawie. 

Dźwina świadomość się w mojej głowie pojawiła, gdy uświadomiłem sobie, że mój kredyt jest całkiem dobrą pseudo lokatą w czasach, w których zaraz ma być wielka inflacja.

Nigdy nie myślałem o pieniądzach w ten sposób. Kredyt, czyli dług daje mi pieniądze ?

Warto też zaznaczyć, że oprocentowanie kredytu jest teraz przynajmniej bardzo małe. Niby super, tylko jeśli chcesz teraz mieć kredyt to bank w czasach COVID bardzo Ci ten wybór ograniczy tylko to się zmieni miejmy nadzieje, za parę miesięcy.

Dobry moment na zakup mieszkania już BYŁ. Bo twoje oszczędzone pieniądze tracą na wartości, a wszytko inne drożeje. 

W świecie gdzie oprocentowanie lokat wynosi 0.01%. Człowiek naprawdę może się zastanawiać czy warto trzymać pieniądze, czy nie mieć tego wszystkiego w jakieś formie aktywów jak mieszkanie w dobrej okolicy. 

Too long?Aktywny NR.11 Przyszła pora na większe przemyślenie co do produktywności programisty. Pracując zawodowo 9 lat i programując już 13 lat mogę dojść do jednego potężnego wniosku. Na początku w tym cyklu były wpisy jak się nie opierdalać teraz przed chwilą zrobiłem wpis o tym, że może bycie leniem od czasu do czasu to nic straconego.

Kariera zawodowa. Cele finansowe. Fazy i cykle produktywności.

 

Cele duchowe i poszukiwanie radości.

To wszystko na pewno nie jest sprintem, w który musisz jak najszybciej odwalić nadludzki wysiłek, a potem mieć to z głowy jedną sferę życia i spojrzeć na dalszą listę swoich Questów jakby to była gra, w której stany,relacje, nagrody raz zdobyte stają się permanentne.

PreCode Wyświetlanie kodu na bloga. Tak mam na ten temat wiele wpisów. Miesiąc temu postanowiłem stworzyć narzędzie w WPF, które pomoże mi jeszcze bardziej przyspieszyć proces dodawania kodu do wpisów oraz do slajdów na webinary.

Taka aplikacja już istniała i nazywała się "PreCoder". Domyślnie był to plugin do Windows Live Writer. Tak kiedyś tak pisałem wpisy, a teraz to nawet Windows Live Writer nie będzie chciał Ci się zainstalować, ponieważ Microsoft zablokował ci taką możliwość. Odpowiedni Open Source tego programu z tego, co wiem to nie ma takiego pluginu. Jego ostatnia aktualizacja była w roku 2017. 

Sam "PreCoder" można uruchomić jako normalną aplikację WPF. Niestety nie spełniała ona wszystkim moich potrzeb więc potrzebowałem czegoś podobnego, ale rozbudowanego. Będę jednak szczery, że ułatwiłem sobie zdanie i logikę formatowania kodu częściowo skopiowałem właśnie z tego programu. 

W tym wpisie pokaże ci jak utworzyć szybko pomocniczą aplikację w WPF która :

  • Usunie białe znaki 
  • Wyrówna odstępy w kodzie
  • Zrobi kodowanie HTML (HTML Encode) na tekscie
  • Tekst automatycznie zostanie skopiowany do schowka
  • Otoczy tekst tagami <pre> i <code> jeśli będziemy tego chcieli
  • Doda odpowiednie paragrafy <p> do tekstu, jeśli będziemy tego chcieli
  • Otworzy rezultat naszego działania w notatniku, jeśli będziemy tego chcieli
  • Doda odpowiednią klasę CSS zależności od typu kodu. Jest to ważne dla biblioteki JavaScript Highlight.js, która koloryzuje składnie na tym blogu
  • Doda atrybut, który określi tytuł kodu. Coś co kiedyś stworzyłem na swoim blogu, ale dawno z tego nie korzystałem, ponieważ nie chciało mi się dodawać atrybutu data-codetitle ręcznie.

Aplikacja ma działać tak.

Relax ?Aktywny NR.10 Witaj ponownie w cyklu Aktywny Programista. Ten cykl rozpocząłem od wpisów na temat marnowania czasu, radzenie sobie ze strachem i ważności samej pracy, ponieważ nie ma magicznych pigułek i skrótów.

Przez lata moje podejście do produktywności i ciśnienia 200% ze swojego umysłu bardzo się zmieniło.

...

Dlaczego?

Myślę, że na początku, gdy zaczynasz swoją przygodę nie koniecznie nawet z programowaniem to masz problem z ogólno rozumianym lenistwem. Sam jako student dużo grałem w gry komputerowe i robiłem mnóstwo rzeczy, które nie miały jakiegoś określonego produktywnego celu. 

Gdy przyszło co do czego to nauczyłem się pracować i studiować równocześnie. Miałem nawet okres, w którym pracowałem od 7 rano do 20 przed komputerem. Ciągłe pisanie wpisów na blogu i czasem nawet się zastanawiam jak to robiłem.

Po co to?Nr 1 W grudniu 2020 roku zrobiłem webinar na temat Kubernetes i Dockera. Postanowiłem zrobić podobny poradnik dla początkującego tylko w formie tekstowej. Poza tym bądźmy szczerzy kopiowanie komend z filmu nie jest ciekawym doświadczeniem.

Technika idzie bardzo szybko. Już w Visual Studio 2019 mając zainstalowany .NET 5 możesz jawnie tworzyć projekty ASP.NET CORE, które domyślnie łączą się z Dockerem i debugować przy jego użyciu aplikację.

Wszystko fajnie pięknie tylko : Co to jest Docker i Co jest Kubernetes ? Do czego to służy  ?

W praktyce jako programista któregoś dnia przychodzi do Ciebie admin i mówi, że od tej pory robimy aplikacje w Kubernetes i każe Ci zrobić konfigurację w taki sposób, aby Kubernetes to widział.

PowerNarzędzie NR.17 W Windows 10 brakuje dużo pomocniczych programów i funkcji. To samo pomyślał zespół Windows Teams i stworzył ten program. 

Program cały czas się rozwija i pomocnicze narzędzia dochodzą.

Z wersją 0.28.0 ten program posiada :

  • Selektor kolorów pod skrótem klawiszowym
  • Strefy przypinania okień : FancyZones
  • Dodanie poglądów plików : SVG, Markdown do Eksploratora plików
  • Pomocnicze narzędzie pod meni, które zmienia rozmiar obrazków masowo
  • Zmapowanie klawiszy na inne klawisze
  • Pomocnicze narzędzie pod meni, które zmienia masowo nazwy plików
  • Uruchomienie pomocniczego pola tekstowego, w którym wpisujesz jaki program chcesz uruchomić lub jaki plik chcesz znaleźć
  • Przewodnik po skrótach pod klawiszem Windows
  • Dodanie kamery wirtualnej, która ma wbudowany efekt tła oraz działa pod twoje skróty klawiszowe

Wiele lat temu dla Windows 95 istniał program PowerToys, dlaczego go nie mieć w Windows 10 i warto zaznaczyć, że jest on OpenSource

Alias Hej tu krótki wpis, który powie dwa zdania na temat tworzenia aliasów do Kubernetes. Gdy korzystasz z Kubernetes to cały czas w wierszy poleceń musisz pisać "kubectl".

Dla mnie to nieintuicyjna nazwa.

Zamiast wpisywać "kubectl" do wiersza poleceń nie fajnie by było wpisać po prostu "k".

FactoryWzór.15 Cześć witaj ponownie we wpisie na temat wzorów projektowych. Oprócz opisywania znanych wzorców projektowych chce także dać swoje 5 groszy i wyjaśnić, że nawet książkowe wzorce projektowe we współczesnym świecie mają lepsze alternatywy.

Dziś spojrzymy na wzorzec projektowy Fabryki.

Po co na fabryka, która ma wypluwać określone instancję obiektów.

Spójrz na ten przykład.

Publish W .NET 5, który jest następną wersją .NET CORE, a nie tego .NET, który działa tylko na Windows. W .NET 5 można utworzyć aplikację WPF i Win Forms tylko działają one nadal tylko na systemy Windows.

Jak na razie .NET nie ma dobrej odpowiedzi na tworzenie aplikacji desktopowych wszędzie. Być może za rok MAUI rozwiąże ten problem.

Na razie WPF i Windows Forms nadal żyją, mimo iż kwestionować te framework można było z tych samym powód w 2010 roku. Mając rok 2021, aż strach pomyśleć, że nic nie zmieniło się w tej kwestii od 11 lat.

Aplikację WPF i Windows Form nadal są używane w firmach. Dodatkowo ktoś na webinarze zwrócił mi uwagę, że istnieje gra na Steamie, która została napisana w WPF.

Ja miesiąc temu napisałem prostą aplikację WPF do formatowania kodu, która bardzo skraca mi czas pracy do tworzenia slajdów bądź wpisów na blogu. 

Powstało jednak jedno dobre pytanie. Jak taką aplikację publikować jako przenośny plik ".exe", który zadziała na każdym systemie Windows bezwzględu na to, czy .NET 5 jest zainstalowany, czy nie.

OBSNarzędzie NR.16 W roku 2020 zrobiłem 16 webinarów i 3 prelekcje online oraz 3 prelekcję musiałem nagrać. Nie zrobiłbym tego bez programu OBS Studio. O ile StreamYard ma gotowy podział na udostępniony ekran oraz na twoją kamerę to moim zdaniem warto mieć nad tym większą kontrolę.

Samo zrozumienie wszystkich przydatnych funkcji, pluginów programu zajęło mi 2 dni. Dla Ciebie zrobiłem szybki skrót, aby korzystać z tego programu.

Sam program jest darmowy więc nie musisz nikomu płacić za te opcję.

Machine?Nr.4 W tym wpisie opowiem o "Awaitables". Jeżeli pracujesz z "async i await" prawdopodobnie słyszałeś te wyrażenie nie jeden raz.  Tylko nie miałeś czasu wniknąć czym ten "Awaitable" jest.

Awaitable reprezentuje typ, na który możemy czekać i wykonać operację przy pomocy słowa kluczowego "await".

 

Task i Task<T> są tymi typami "awaitable".

SynchroNr.3 Pora wejść głębiej w to, jak async i await działa. Po oczywiście pisanie teraz kodu jest łatwiejsze, ale wciąż nie unikniesz problemu z synchronizacją działania w naszej aplikacji. 

To jest jedno z tych zagadnienia, co w ogóle robi : ConfigureAwait i dlaczego Visual Studio czasem mi sugeruje, bym ustawił to na false.

Co może być przerażające, gdy zdaje sobie sprawę, że ten mechanizm działa inaczej w zależności od tego, czym nasza aplikacja jest.

Czy jest to konsola? Czy jest to aplikacja WPF, Windows Forms?

Czy jest to aplikacja Web, czyli ASP.NET Core? Czy jest to aplikacja na telefon?

Stickyposition : sticky. Jest miksem pomiędzy ustawieniem fixed i relative. Element jest traktowany jako fixed, dopóki pewna wartość wysokości strony nie zostanie przekroczona. Element wychodzi poza ekran i już staje się niewidoczny. Gdy element jest na ekranie to trzyma się on Ciebie jak naklejka do czasu przekroczenia pewnej wysokości.

Jesteś ciekawych efektów Woo w CSS. Ja postanowiłem zrobić krótką rewizję fajnych efektów CSS. Tak jak kiedyś to robiłem.

Na tej stronie masz prosty przykład jak możesz wykorzystać właściwość "position : sticky" w połączeniu z negatywnymi marginesami i obrazkami reprezentującymi dwie warstwy.

Historia Pamiętam jak przeglądałem po raz pierwszy internet.

Strony internetowe wyglądały bardzo prymitywne i nawet śmiesznie.

 

  • Zły kontrast
  • Masa gifów
  • Źle powtarzające się tło...nie...Oczojebne tło.
  • Napisy w stylu WordArt
  • Migające napisy
  • Lista gości
  • Muzyka w formacie MIDI
  • ClipArt
  • Tabelki HTML
  • Obrazki "Under Construction"
  • Animowane napisy 3D.

Pamiętam jak kupiłem czasopismo "Komputer świat/Click!" i czytając ich poradniki dla zaawansowanych i próbowałem swoich pierwszych kroków w HTML. 

Te porady jednak tworzyły czasem takie strony. Pamiętaj Onet dawał możliwość tworzenia blogów za darmo więc każdy mógł zrobić "beznadziejną" stronę na temat "Dragon Ball" czy swojego ulubionego zespołu "Spice Girls"

calc() Czy wiedziałeś, że w CSS możesz wykonywać kalkulacje matematyczne?

Tworzenie stron internetowych nigdy nie było, aż tak łatwe. Pomyśleć, że kiedyś CSS nie miało żadnych funkcji teraz ich masz bardzo dużo i jednym problemem jest wsparcie przez przeglądarki.

Dobra wiadomość jednak jest taka, że wraz ze śmiercią Internet Explorer i pojawieniem się przeglądarki EGDE - CSS przeżywa najszybszy rozwój niż kiedykolwiek.

W tym wpisie omówimy w dokładnych szczegółach jak tą funkcje LICZENIA wykorzystać.

Marketing Czy samo bycie programistą to za mało? W końcu powstaje pytanie "jak się wyróżnić" na tle innych programistów. W 2011 roku ten blog właśnie blog kiedyś otworzył mi drzwi do kariery...i miałem gadkę, że może nie mam doświadczenia, to jestem ambitny, pracowity i tak dalej.

Na podstawie tego doświadczenia mógłbym Ci powiedzieć. Chłopie załóż bloga. Nawet tak robiłem. Mam wpisy z roku 2016 gdzie głosiłem takie kazanie.

Ja w tamtym czasie też czytałem artykuły o tym, jak stworzyć sobie IMAGE ROCKSTAR developer coś tam, aby dostawać pracę na pstryknięcie palca. Wystarcz, że założysz bloga.

Tylko w roku 2020 nikt nie czyta już blogów. Spójrzmy prawdzie oczy prawdopodobnie 50% czasu twojego w internecie to social media. A kolejne 50% procent to YouTube, który jest współczesną telewizją.

Firmy HeadHuneterskie jak BulldogJob czy JustJoinIT robią takie dobre wpisy marketingowe/programistyczne, że ja się zastanawiam czy w ogóle już coś pisać. Bo jako programista w wyszukiwarce Google jak nie tylko walczę z każdym innym programistą, który piszę bloga. Ja walczę też korporacjami, którzy mają cały zespół ludzi do tworzenia tak zwanego Contentu.

Nie mówiąc o tym problemie, że pisze bloga po polsku. Za granicą natomiast powstał wiele zbiorników blogów programistycznych:

Sprawdzałem, jak moje najnowsze wpisy sobie radzą pod względem SEO i mnie nie dziwi, że kiepsko to wygląda. Ile programistów, firm teraz chce sprzedawać kursy programistyczne i inwestuje w reklamę na Facebooku, LinkedIn. 

A więc sam blog nie wystarczy. 

Czyli moja strategia, którą prowadziłem przez te lata, właściwie mnie już w ogóle nie wyróżnia.

Tak zadałem sobie pytanie "Co mogę z tym zrobić". Zadałem sobie też pytanie "Co z tego?"

W końcu nie chce sprzedawać kursów. Od 2011 roku zawsze chodziło o to, aby być zapraszany jako prelegent i mieć fajny bajer, gdy będę szukał pracy. Nie jestem trenerem. Nie mam kursu na sprzedaż. 

Mimo wszystko gryzło mnie to. Bo jak nie wiadomo, o co chodzi, to chodzi o EGO.

Bo co wiele lat pracy ma pójść do kosza. Mam po prostu poddać się. Jako to jest z tym marketingiem programisty?

Pora odświeżyć swoje kanały Social Media.

Mistakes Słuchaj, nie musisz, być specjalista czy grafikiem, aby znać CSS. Jeżeli określasz się jako FullStack, to znaczy, że znasz także CSS. Pytanie jednak brzmi czy pomimo tego, że znasz CSS, to wiesz, jaki błędów warto unikać.

CSS nie jest intuicyjny. Ma pewne ukryte zasady, które odkryjesz, dopiero gdy zobaczysz, że coś nie działa. 

Praca z samym CSS może być mimo wszystko przyjemna, ale aby tak było na pewno trzeba unikać pewnych błędów.

Oto 11 z nich.

vm Ostatnio robię poprawki na blogu. Przyglądam się temu, jak pisałem kiedyś CSS. Widzę, że dla pewnych nagłówków tekstowych napisałem tyle "@media Queries", aby tekst zawsze dopasowywał się do wielkości ekranu. Oczywiście tak nie powinno się robić. W sumie to rozwiązanie zakłada pewną ilość znaków tekście.  

Spójrz. Czy to dobrze wygląda?

UnBlock Istnieje wiele stron internetowych, które blokują możliwość prawego kliknięcia czy zaznaczenia tekstu. Można się domyślić, że jest to jakieś prymitywne zabezpieczenie przed kopiowaniem obrazków czy tekstu.

Oczywiście zawsze możesz, pobrać zawartość strony korzystając z F12 i DevTools. 

W tym krótki wpisie pokaże ci krótki spis narzędzi, który tę blokadę usuwa.

jQuery Bootstrap. Pomocniczy framework CSS do budowania stron. Pracuje on nad swoją 5 wersją. Wypuścił on całkiem niedawno swoją najnowszą wersję alpha. 

Jego najnowszy bajer polega na tym, że nie jest on już zależny od jQuery. To zadaje poważne pytanie. jQuery był pierwszy wspaniałym frameworkiem JavaScript, który przez lata ułatwiał budowanie stron internetowych. Jednakże nic nie trwa wiecznie. W programowaniu ciężko znaleźć rozwiązanie, które potrafi przetrwać 10 lat lub więcej.

Pytanie, czy dziś i w przyszłości potrzebujemy jQuery do budowania stron internetowych

SymbolNr.4Pogadajmy o symbolach, które są od ES6. Nie było ich wcześniej w tym języku programowania. Co pierwszy raz o nich słyszysz.  Nie ma problemu. Po to jest w końcu ten szybki trening JavaScript. Symbol spełnia parę zadań w JavaScript.

Jednym z nich jest wygenerowanie unikatowego identyfikatora. 

Sztuczna polega na tym, że TY nigdy nie wiemy, jak dokładnie wygląda ten identyfikator i nie masz do niego dostępu. 

Nie masz żadnej możliwości inspekcji, aby zobaczyć, czym ten identyfikator jest. Wiem, że będzie on unikatowy. Utwórzmy, więc ten symbol korzystając z funkcji symbol.

Jak widzisz, aby go utworzyć, muszę podać jakiś napis. Ten napis jest użyty tylko do celów debugowania.

Co się teraz stanie? Utworzy się nowy symbol z unikatowym ID w silniku JavaScript i przypiszemy ten identyfikator do naszej zmiennej.

Sprawdźmy jakiego typu jest nasz symbol.

ModuleNr.2 W tym wpisie zobaczymy jak moduły i klasy działają w JavaScript. Wiem, co sobie myślisz "przecież ja o tym wiem", ale czy tak rzeczywiście jest. Nie zaszkodzi zrobić szybką powtórkę i odświeżyć wiedzę. 

Jeśli zaczynasz swoją przygodę z JavaScript, to ten wpis jeszcze bardziej Ci się przyda. O ile wcześniej do testowania kodu JavaScript wystarczyła sama konsola przeglądarki. Tym razem będę potrzebował prymitywny projekt.  

Utworzyłem w Visual Studio Code 3 pliki index.html, main.js i module-first.js.

SłownikiNr.3 Czy wiesz, że tablica nie jest jedyną kolekcją w JavaScript. Poza tym sama tablica oferuje dużo metod pomocniczych i nie musisz pisać swoich.

Dzisiaj spojrzymy na to wszystko. W końcu to trening JavaScript.

Wraz specyfikacja EcmaScript 6 i dalej pojawiło się mnóstwo dodatkowych funkcji dla tablic. Zacznijmy od problemu, który możesz przypadkiem popełnić. Tworzymy niby tablice i umieszczamy w niej wartość 200.000. Programista może założyć, że jest to wartość, która idzie do tablicy. Co jednak pojawi się w konsoli.

HistoriaNr.2 W tym wpisie zobaczmy ewolucję kodu .NET, jeżeli chodzi o asynchroniczność. Dlaczego? Warto być świadomym tego, dlaczego async i await jest taki wygodny w użyciu, zwłaszcza gdy zobaczysz dawne rozwiązania.

W poprzednim wpisie omówiliśmy terminologię oraz zrobiliśmy krótki wstęp na temat tego, jak  wątek i procesor działa. 

Teraz pora na przygodę po kodzie .NET w C#.

TerminologiaNr.1 Znasz definicję i terminologię powiązane ze współbieżnością. Nie wiesz, jak to działa w procesorze? Spoko o to wpis dla Ciebie. 

Współbieżność jest przydatna w każdej aplikacji. Nie ważne czy pracujesz w aplikacjach desktopowych, czy w aplikacjach mobilnych. Mamy rok 202X i obecnie wielowątkowość stała się wymaganiem. 

Z obecnymi komputerami użytkowników i serwerów istniejmy w punkcie, w którym programowanie asynchroniczne jest zalecane. Całkiem nie dawno zrobiłem prezentację na żywo o tej tematyce. Jak się okazało, był to mój najlepszy i najbardziej popularny LIVE. Dlaczego? O ile istnieje tona artykułów o podstawach i zaawansowanych funkcjach danego języka programowania. To widać wyraźnie, że nie ma dużo informacji o wielowątkowości w C#.

Uzupełnijmy więc tę lukę. W tym wpisie omówimy w pigułce, o co chodzi z tą wielowątkowością.

gitignoreTrik. 4 W tym wpisie omówimy działa pliku ".gitignore". W tym pliku określasz jakie pliki mają być ignorowane przez repozytorium git.

O ile w samym Git ignorowanie plików przez repozytorium to fajny bajer. To ignorowanie plików na potrzeb umieszczenia później ich gdzieś w chmurze np. w GitHub jest esencją każdego projektu. Nie chciałbyś, aby dane poufne jak hasła wyciekły do GitHub-a albo żyły w historii repozytorium.

Istnieje przypadek utraty przez osobę wszystkich bit coin-ów, bo wrzucił do Github-a przez przypadek swoje hasło do konta.

Nie ma co się bać tego pliku ".gitignore". Jest on naprawdę prosty w obsłudze.

Vim?Trik. 3 W tym wpisie pokaże ci jak zamienić Vim w git na moim zdaniem lepsze narzędzia. Kojarzysz Vim? To ten program, z którego programiści nie umiał wyjść.

Kojarzysz memy, aby wyjść z Vim-a, trzeba wyłączyć komputer.

Domyślne narzędzia Git są podpięte po ten edytor, ale ty możesz to zmienić.

Vim faktycznie nie jest to przyjaznym programem dla początkujących.

Dlaczego więc go nie zastąpić?

Restore?Trik. 2 Zrobiłeś więc zmiany do swojego repozytorium Git. Jak je jednak cofnąć. W tym wpisie zobaczmy trzy polecenia: reset, restore i revert.

Ich nazwa sugeruje, że każde z nich może służyć do cofanie swoich zmian. Jak jest jednak naprawdę. Zobaczmy.

Wszystkie Kategorie