Już kwartał roku za nami, a ja czuję jakby to był drugi tydzień stycznia. Czas pędzi nieubłaganie i pora na podsumowanie pierwszego, dość ciepłego miesiąca w roku. Postępy realizacji celów Listę moich celów/zadań w postaci trzech poziomów można znaleźć tutaj. Cudze chwalisz, a swojego nie znasz 0/25 Poziom 1: Odwiedzić 25 polskich lokacji Jeszcze nic z listy nie odhaczam, ale z pewnych powodów coraz częściej bywam w Warszawie, a cztery pozycje z listy znajdują się właśnie tam. W czarno białym filmie 15/30 Poziom 1: Pójść 30 razy do kina Pod koniec miesiąca razem z siostrą byłem na Kapitan Marvel. Uwielbiam uniwersum Marvela i kapitanka mi się podobała, choć śledząc różne…
-
-
.NETowa paczka w Humble Bundle za małe pieniądze
Tym razem do kupienia na Humble Bundle pojawił się pokaźny zestaw .NETowych książek wydawnictwa Apress z różnych kategorii. Całość możecie znaleźć tutaj lub poniżej w formie listy. Wszystkie książki są w języku angielskim, a większości z nich sam nie czytałem, więc nie mogę powiedzieć, czy je polecam. Oferta ważna jest niecałe 14 dni, więc macie trochę czasu do namysłu, potem książki zmienią się na inną tematykę. Humble Bundle składa się z trzech zestawów, każdy za inną kwotę, a droższy pakiet, zawiera w sobie te tańsze. Pakiet pierwszy Kosztuje jednego dolca, co przekłada się na 3.83 złotych, więc jest to koszt jednego piwa. Zawiera on: C# 7 Quick Syntax Reference: 180…
-
Przestarzałe części kodu i atrybut Obsolete – Język C#
Przy tworzeniu oprogramowania niemal zawsze trzeba coś zmieniać. Może to być spowodowane sprawami wewnętrznymi, takimi jak nasze (bądź teamu) widzimisie w stosunku do projektu oraz tymi zewnętrznymi. A to klient/konsument będzie chciał coś zmienić, a to regulacje prawne ulegną przemianie i będzie trzeba dostosowywać aplikację do obowiązujących przepisów, albo znajdzie się jeszcze coś innego. Czasami jednak nie będziemy mogli nawet zmodyfikować naszej cześci aplikacji od tak, modyfikując istniejący kawałek kodu, bo: Wymagało by to większego pokładu czasu oraz wysiłku niż stworzenie komponentu od nowa. Złamalibyśmy drugą zasadę SOLID open/closed principle, która jasno mówi, że kod powinien być zablokowany na modyfikację, a otwarty na rozszerzenia. Z naszego systemu korzystają inni programiści,…
-
Podsumowanie miesiąca: luty 2019
Ooo, nie mam wstępu. No to trudno, będzie bez. Postępy realizacji celów Listę moich celów/zadań w postaci trzech poziomów można znaleźć tutaj. Degustator 4/20 Poziom 1: Spróbować 20 rodzajów win Do listy doszedł jedynie inny rodzaj Carlo Rossi: Carlo Rossi sweet white moscato. W czarno białym filmie 14/30 Poziom 1: Pójść 30 razy do kina Byłem na Jak wytresować smoka 3. Ta seria to moja ulubiona seria filmów animowanych ostatnich lat, czy to za sprawą animacji i grafiki, czy też fajnej fabuły i ciekawych bohaterów. Lubię też historię wikingów. W książce urodzony 10/30 lista książek, które czytam, chcę przeczytać lub przeczytałem. Poziom 1: Przeczytać 30 książek fabularnych Na ten miesiąc…
-
Płytkie (shallow) oraz głębokie (deep) kopiowanie – Język C#
Kontynuuję artykuł na temat tworzenia kopii obiektów referencyjnych. We wcześniejszym wpisie, który możecie znaleźć tutaj, zaprezentowałem jak działa metoda MemberwiseClone oraz interfejs ICloneable, ale czy na pewno wszystko zostało powiedziane? Płytkie kopiowanie (ang. shallow copy) W poprzednim materiale nie bez powodu badanym obiektem był punkt, składający się z dwóch typów wartościowych: X oraz Y. Tym razem będzie trochę inaczej, bo utworzymy obiekt zawierający typy referencyjne. W przykładzie mamy klasę detektywa, który ma do wykonania pewne zadanie. Będzie ono składać się z identyfikatora oraz zmiennej tekstowej określającej co należy zrobić. Sklonujmy teraz detektywa i zmienimy pewne wartości. Po uruchomieniu przykładu zobaczymy: Nie wyszło jednak tak, jak chcieliśmy. Imiona detektywów pokazały się…
-
Tworzenie kopii obiektów przez MemberwiseClone oraz ICloneable – Język C#
Przypisanie istniejącego obiektu do innej zmiennej niesie ze sobą pewne ryzyko. Należy być świadomym, czym różni się i co zawiera w sobie typ referencyjny, a co typ wartościowy. O typach wartościowych pisałem już nieco podczas omawiania struktur, w tym materiale. Tam też przedstawiłem problem przypisywania typów referencyjnych do innej zmiennej, który zaraz przypomnę. Przypisywanie typów wartościowych Jak sama nazwa wskazuje typy te zawierają w sobie wartość, która zostaje im przypisana. Stwórzmy w naszym testowym przykładzie zwykłą strukturę reprezentującą punkt na płaszczyźnie 2D: Punkt taki składa się z dwóch właściwości, jedna wskazuje położenie w poziomie, a druga w pionie (takie małe przypomnienie ze szkoły). Teraz utwórzmy obiekt naszej struktury, czyli punkt,…
-
Operacje CRUD – EF Core
W poprzednim wpisie, dotyczącym EF Core, pokazałem jak utworzyć prostą bazę danych składającą się z jednej tabeli w podejściu Code First. Jednak baza danych do czegoś służy, a nie wegetuje sobie gdzieś. Dzisiaj wykonamy na niej proste operację CRUD, czyli dodamy element (Create), wczytamy go z bazy danych (Read), zmodyfikujemy jego zawartość (Update) oraz usuniemy z bazy danych (Delete). CRUD jest oczywiście akronimem od tych wszystkich operacji. Do tej pory z cyklu poradników o EF ukazały się: Tworzenie bazy danych w podejściu Code First – EF Core Przypomnienie Trochę przypomnienia z poprzedniego wpisu, żebyście nie musieli weryfikować go od nowa. Operujemy na tabeli detektywa, określonego przez klasę: a nasza baza…
-
Podsumowanie miesiąca: styczeń 2019
Pierwszy miesiąc Nowego Roku za nami i niektórzy zdążyli już porzucić swoje postanowienia noworoczne oraz wyzwania jakie chcieli podjąć na rzecz spokoju ducha albo leniuchowania. Niektórzy też nie lubią takiego systemu określania zadań, ponieważ się u nich nie sprawdza. Jak to wypadło u mnie? Styczeń 2019 Pierwszy tydzień miesiąca był jeszcze w świątecznej aurze wyżerki (jedzenia się nie wyrzuca), oraz zabawy. Na początku miesiąca kupiłem kartę graficzną, która mi się w grudniu spaliła, więc to spowodowało, że trzeba było przetestować nowy sprzęt. Właściwie tylko z dwa dni dałem sobie na całkowitą “rozpustę” i dobrze mi to zrobiło. Dalej starałem się realizować moje postanowienia roczne, które można przejrzeć tutaj oraz cele…
-
Cała szerokość strony, czyli o mrocznym widmie viewport width
W wielu sytuacjach chcemy, aby nasz element zajmował całą szerokość okna przeglądarki. Zewnętrzna struktura strony, tło czy pewne komponenty nadrzędne, często tyle miejsca potrzebują. Aby ustawić odpowiednią szerokość należy nadać wartość width w CSSie. Można to zrobić za pomocą procentów (jeżeli komponent nadrzędny nie ogranicza szerokości) lub za pomocą vw (viewport width), który dostosowuje rozmiar do szerokości obszaru roboczego przeglądarki. Czy wykorzystanie obu sposobów jest identyczne? W pewnym stopniu działają podobnie, ale jest między nimi ogromna różnica, która może spowodować, że strona częściowo się rozjedzie. Szerokość viewport (vw) wlicza do siebie jeszcze pionowy pasek przewijanie, jeżeli jest on na stronie. Przykład poniżej przedstawi problem. Mamy taki wycinek kodu HTML oraz…
-
Tworzenie bazy danych w podejściu Code First – EF Core
Podejście Code First polega na utworzeniu modelu danych za pomocą klas języka C#. Utworzona klasa będzie reprezentowała tabelę bazy danych, a zawarte w niej właściwości (ang. property) będą odzwierciedlały kolumny tabeli. Na podstawie wskazanych klas, które mają być zawarte w bazie danych, EF Core wygeneruje odpowiednie tabele. W tym wpisie pokażę jak utworzyć prostą bazę danych składającą się z jednej tabeli reprezentującą encję detektywów. Na początek wybieram projekt. Będzie to zwyczajna aplikacja konsolowa w Core: Teraz stworzę model danych w postaci klasy POCO (Plain Old CLR Objects). Jest to prosta klasa, odzwierciedlająca dany byt, która później zostanie zamieniona na tabelę bazy danych. Tutaj będzie to tabela detektywów. Zauważcie, że model…