Cezary Walenciuk Programowanie

Model RazorCzęść NR.4W poprzednim wpisie omówiliśmy jak ASP.NET MVC przy pomocy Routingu ustala, jaki kontroler powinien zostać użyty w zależności od adresu URL. W tym wpisie omówię kontrolery oraz rezultaty, jakie mogą być zwracane przez metody w kontrolerze. Omówimy krótko model oraz widok.

Mówiąc krótko po tym wpisie powinieneś zobaczyć, jak wszystkie elementy MVC ze sobą współpracują. 

CiszaHistoria NR.8 Nadszedł rok 2013. Będę szczery ten rok był jednym z trudniejszych w moim życiu. Jak więc nie mogłem powitać tego roku siedząc w mieszkaniu, w rodzinnym domu, zastanawiając się na tym jak moje życie nie posuwa się do przodu. Coś w tym było. Rok 2012 oprócz tego, że wymusił poszukiwanie pracy był dosyć spokojny.

Jeżeli czytałeś poprzedni wpis z tego cyklu, to zapewne wiesz jak właściwie pół roku 2012 było niczym innym jak czekaniem, aż te cholerne studia magisterskie się skończą.

To był jeden z moich większych błędów życiowych. Nie można przecież  czekać, aż życie da ci szczęście. Nie możesz  czekać, aż coś się wydarzy lub coś się skończy i będzie być może lepiej. Nie możesz czekać na coś, co nigdy się nie wydarzy, jeśli czegoś nie zrobisz.

Oczywiście w 2012 roku robiłem coś więcej niż czekanie. Pisałem tego bloga i od czasu do czasu chodziłem na randki z tragicznymi skutkami. Niestety nie zmienia to faktu, że tę drugą połowę roku 2012 pamiętam jako “czekanie”.

CeleKariera NR.1 Nie każdy jest taki sam. Każdy z nas ma inny zestaw celów, które powinny zostać zrealizowane w naszej karierze. Zanim jednak zaczniesz spełniać swoje cele najpierw musisz ustalić czym one dokładnie są. Brzmi to dosyć prosto? Niestety rzeczywistość jest inna.

Rozmawiając z różnymi ludźmi i także z samym sobą przed lustrem zdałem sobie sprawę, że większość z nas żyje życiem programisty bez żadnych konkretnych celów.

Większość programistów i ludzi nie ma określonych celów, co więcej być może nawet nie zdaje sobie sprawy, że cele są ogólnie potrzebne.

Oczywiście nie jest to nic nadzwyczajnego. Jak sam pisałem wcześniej miałem nie raz trudną dyskusję przed lustrem z samym sobą na ten temat.

Koncentracja i myślenie jest męczące i wymaga wysiłku. Nie każdy z nas poświęca czas i swoje myśli na to, którędy powinien pójść dalej.  Co w tym złego? Pozwól, że posłużę się metaforą.

ImBatchNarzędzie NR.5Wprowadzam kolejne wielkie zmiany na bloga. Te zmiany są związane z dużą ilością obrazków i ilustracji. Wprowadzenie tych zmian ręcznie byłoby katorgą i stratą czasu. Dlatego postanowiłem się zastanowić jak prawdziwy programista jak ten proces zautomatyzować i to szybko.

Potrzebny był mi jakiś automatyczny przetwornik/transformat dużej ilości obrazków, który jeszcze byłby darmowy.

Po pół godzinne szukania różnych rozwiązań jedyne co zmalałem pod swoje kryteria to plugin do Paint.NET, który obecnie nie działa oraz program ImBatch.

RoutingCzęść NR.3 Nadszedł w końcu ten czas, aby na tym blogu napisać kurs o ASP.NET MVC. Wiem, że jest to kurs ASP.NET Core, ale przez większą cześć tego kursu będziemy mówili o ASP.NET MVC i o rzeczach, które już istnieją w starszych jego wersjach.

To co chcemy ostatecznie osiągnąć, to napisać aplikację WEB korzystając z ASP.NET MVC. W teorii jest możliwe stworzenie aplikacji ASP.NET używając tylko Middelware, ale po co wybierać taką trudna drogę.

MiddelwareCzęść NR.2 Najpierw zrozummy czym jest Middelware zanim przejdziemy dalej. W poprzednich wersjach ASP.NET zarządzania przepływami żądań HTTP nie było takie oczywiste i proste. Przykładowo w ASP.NET Web Form, które nie jest już wspierane przez Microsoft mieliśmy system zdarzeniowy, w którym łatwo można było się pogubić.

W ASP.NET Core proces przetworzenia żądania HTTP jest znacznie prostszy w obsłudze, jak się zaraz przekonasz.

Przykładowo wysyłamy żądanie strony poems poprzez adres URL. Gdy wpisujemy do przeglądarki adres strony,  wtedy najczęściej wysyłamy zapytanie HTTP typu GET. Jeżeli wypełniamy formularz będzie to żądanie typu POST.

Na razie nie ma to większego znaczenia. Co się dzieje z tym zapytaniem?

C# 7.0 Na konferencji Build 2016, Microsoft wypuścił pierwszy publiczny wgląd do nowego Visual Studio 15. Po co go zainstalować? Warto go mieć by zobaczyć, co obecnie można zrobić w kolejnej iteracji języka C#. Jest to siódma iteracja C#. Pojawiło się w niej wiele ciekawych sztuczek.

Instalacja Preview Visual Studio 15 wydaje się mało inwazyjna na cały ekosystem programistyczny w moim komputerze. Wydaje się, że w każdej chwili mogę odinstalować ten edytor bez niszczenia czegokolwiek w swoim systemie operacyjnym.

ListList NR.1 Cześć. Ostatnio odpisywałem na listy od czytelników. O co czytelnicy mnie najczęściej pytają? O karierę oczywiście.

Będę szczery. Nie zawsze mam czas odpisywać na listy. Jednak gdy odpisuję staram się by moja odpowiedź była czymś lepszym niż szybką odpowiedzią bez głębszego zastanowienia.

Postanowiłem wiec stworzyć cykl : Listy od czytelników. Cykl otwiera najnowszy list od Krzysztofa.  Jak zaraz się przekonacie Krzysztof, tak jak wiele osób zmienia branżę i stwierdza, że chce być programistą.

Jakie jest jednak jego główne pytanie.

Code Jeśli jesteś programistą takim jak ja, to zapewne programujesz w wielu językach, platformach, a nawet na różnych systemach operacyjnych. Być może tworzysz strony internetowe przy użyciu Angulara z Ruby, a po godzinach programujesz skrypty w Pythonie.

A co z ASP.NET i C#. Czy istnieje jakieś jedno słuszne narzędzie inne niż Visual Studio? Visual Studio w końcu działa tylko pod system Windows i pomimo różnych wtyczek nie służy do pisania każdego kodu.

Otóż na pomoc nadchodzi dużo chudsze narzędzie Visual Studio Code. Moim zdaniem nazwa jest trochę myląca, ponieważ samo narzędzie nie ma tak wiele wspólnego z Visual Studio.

Visual Studio Code to lekki i szybki edytor stworzony z myślą o tym, by programować w nim na każdym systemie operacyjnym.

Audio API Dostałem wczoraj na Facebooku zapytanie jak można otworzyć dźwięk na stronie HTML. Sprawa wydaje się bardzo prosta, jeśli się wiem, jakich frazy trzeba szukać w Google. Osoba, która zadała mi to pytania widać, że się nie zna nawet podstaw co by tłumaczyło dlaczego z tym problemem zgłosiło się do mnie.

A tak na serio. Nie zawsze Facebook pozwala mi czytać wiadomości od obcych osób dlatego, jeśli macie pytania lub prośby zawsze możecie skorzystać ze strony kontaktowej.

Przejdź mi jednak teraz do omówienia problemu odtworzenia dźwięku w HTML, a raczej w JavaScript-cię.

Problem ten obecnie łatwo rozwiązać, ponieważ żyjemy w przyszłości HTML 5. Tak jest do otworzenia dźwięku nie potrzebny nam jest plugin Flash czy Silverlight. Mamy wszystko co nam jest potrzebne.

ASP.NET CoreCzęść NR.1 ASP.NET Core jest to nowy framework Microsoftu, który został zbudowany na nowo. Dlaczego został zbudowany na nowo? By był szybszy, bardziej elastyczny, nowoczesny i żeby działał na różnych platformach jak LINUX i OS X.

Skończyły się więc wymówki, by nie pisać w ASP.NET bo nie można tego uruchomić na Linux. ASP.NET Core jest frameworkiem z platformy .NET i będziesz go używał do tworzenia stron.

W tym kursie zbudujemy stronę internetową zaczynając od pustego projektu. W taki sposób, abym mógł  ci pokazać jak te wszystkie elementy ze sobą się łączą.

Zainstalujemy odpowiednie poboczne rozwiązania. Potem przyjrzymy się frameworkowi MVC.

KomentarzeKomentarze na blogu obecnie mnie wspierają i dają cenne rady jak poprawić dany wpis. Komentarz jest duszą twojego bloga, gdy twoje serce leży w jego treści. Bez komentarzy blog jest trochę jednowymiarowy. Nie ma większej głębi.

Dlatego każda treść napisana przez ciebie w komentarzach ma znaczenie. Zwłaszcza że twoja opinia albo fakt, że zauważyłeś błąd może pomóc innym czytelnikom.

Jesteśmy jednym zespołem. Jedną rodziną. A ja jestem tylko człowiekiem, który też popełnia błędy. Prowadzę aż dwa blogi o przemawianiu i programowaniu jednak nie będę ukrywał, że fakt tworzenia wychodzi tylko ode mnie, a nie od jakiegoś zespołu ludzi.

Nie zawsze tak było. Rzeczywiście nawet kiedyś dla swojego dobra przestałem je czytać.

Blog stawał się czasami dysputą, kto ma większego Wacka programistycznego pomiędzy czytelnikami.Potem gdy przeniosłem się do Disqus wszystkie te komentarze poszły do kosza. Od kiedy jednak posiadam system Disqus, nadeszła w końcu ta lepsza era.

Zacznijmy jednak od początku.

Dlaczego?Programisto bloguj. Pisz i pisz. To fantastyczny sposób na marketing i pokazanie własnej osoby. Blog może pomóc ci znaleźć pracę. Blog też pozwoli ci stworzyć więź z klientami.

A tak na serio blog nie jest czymś potrzebnym do życia. Mimo to moim zdaniem warto bloga mieć nawet dla samego siebie.

Zanim jednak zachęcę cię do pisania bloga, skoncentrujmy się na tym, dlaczego programiści nie blogują. Jakie są obawy przed blogowaniem? Co nas powstrzymuje przed blogowaniem?

To są ważne pytania. Prowadzenie bloga wiąże się z bólem, wysiłkiem oraz strachem. Nie każdy chce takich emocji doświadczać.

OdpływającyDemon NR.10

Co się dzieje? Co robiłem w piątek?

Zaraz muszę sprawdzić? Tylko najpierw przejrzę pocztę.

Dlaczego jestem na tym spotkaniu? O czym te osoby przy stole rozmawiają?

Dobrze, że mogę sprawdzić Facebook na telefonie. Z drugiej strony ciekawe, co nowego na 9 Gag-u.

Co ja właściwie robię w tej pracy? Miałem coś zrobić? O coś zapytać? Coś mi mój szef mówił 15 minut temu, ale nie pamiętam co. Czy to jest mój kod? Pisałem go trzy dni temu, ale nie mam pojęcia co on robi.

ArtystaDemon NR.9

Dzięki Bogu nie mam w sobie tego demona, ale się z nim spotkałem wielokrotnie w swoich miejscach pracy oraz na studiach.

Programowanie to sztuka.

A każda sztuka potrzebuje artysty.

Kod jest jak obraz, który musi zostać namalowany. Aplikacja jest jak rzeźba, którą trzeba dokładnie kuć dłutem.

Artysta chce wyrazić siebie. Chce wyrazić swój geniusz. Chce być podziwiany. A programista może tworzyć dzieło sztuki tylko w  jeden sposób,  pisząc kod.

FanatykDemon NR.8Fanatyk Agile ma obsesje na punkcie “użyteczności”.

Będzie poszukiwał sposobów jak zwiększyć efektywność i produktywność swojego zespołu oraz samego siebie.

Przeczytał o tym wiele książek i teraz już wie jak to trzeba zrobić. Wystarczy tylko wprowadzić pewne zasady i procesy usprawnią się o 150% .

Istnieje jednak pewien problem.

IzolatorDemon NR.7Izolator to demon, który jest mi bardzo bliski. Walczyłem z nim nie raz.

Będę miał więc wielką przyjemność opisania go w szczegółach.

Programiści mogą być dziwakami. Komputery mogą fascynować niektórych ludzi, ponieważ właśnie są to obiekty, które myślą logicznie.

Komputer nie obrazi się nie ciebie. Komputer niczego złego nie powie.

Natomiast ludzie to co innego. Ludzie to istoty emocjonalne, które niewiele mają wspólnego z logiką. Są nieprzewidywalni i mogą ranić

Ludzie są straszni.

ArcheologDemon NR.5

Czas na kolejnego demona programisty.

A jest nim Archeolog.

W ostatnim roku dostałem zadanie pielęgnacji bardzo starego systemu napisanego JavaScripcie używającego kontrolek ActiveX.

W systemie wszystkie informacje transformują się do różnych form XML z 3 razy, aż w końcu powstaje ten ostateczny XML, który zostaje zapisany do bazy Oracle.

Jeśli w którejś transformacji coś się nie zgadza, to cały system nie działa.

Przez te transformacje oraz fakt, że logika biznesowa jest w plikach JavaScripcie po 4000 stron było dla mnie oczywiste, że w końcu napotkam tego demona na swojej drodze.

RobotDemon NR.4Robot.

Jak sama nazwa wskazuje nie jest to człowiek. Programowanie i przestrzeganie zasad może dehumanizować.

Cel jest szczytny. Emocję tworzą chaos. Ludzie tworzą chaos. Dlaczego więc nie ograniczyć ich do minimum i stworzyć całkowicie sterylne miejsce pracy jakby to był sklep Appla?

Robot więc chce stworzyć porządek wyprowadzając procedury, dokumentacje i operacje oparte na prostej logice IF-ELSE.

Te jednak pragnienie stało się tak silne, ze w rezultacie demon Robota uporządkował nie tylko miejsce pracy, ale także samego siebie.

Stał się on jednym z komputerem. Myśli on ja sam język programowania, w którym piszę.

HegemonDemon NR.3

Hegemon to o dziwo słowo, które występuje w języku polskim i nie jest to nazwa kolejnego Pokemona.

Hegemon to osoba mająca władzę i przewagę nad innymi.

Jest to słowo pokrewne od Hegemoni. Hegemonia to termin z języka greckiego, który oznacza przywództwo jednego państwa nad innym. To przywództwo nie było jednak dobrowolne, było wymuszone groźbą i sterowane siłą.

SabotażystaDemon NR.2

Sabotażysta to najgorsza, koszmarna osobność programisty. To też najgorszy demon, który może cię opętać.

Jest on nasycony chęcią zemsty, lenistwem i chciwością.

Na szczęście może zostać utworzony jak potwór Frankenstein tylko w trakcie koszmarnej burzy, patologii samej firmy.

Każda iskra nienawiści, każdy piorun złości, ożywia tego demona.

A strach przed utratą pracy i chęć łatwego zysku ostatecznie  ożywia tego potwora.

Takie demony nie powstają z niczego.

Ulubieniec TDemon NR.1

Witaj w nowym cyklu, w którym będę opisywał nasze osobiste demony programistyczne, które nam przeszkadzają w pracy, jak i w zadaniach.

Jeśli jesteś programistą już jakiś czas, to na pewno spotkałeś się z takimi demonami bądź osobami, które tak się zachowywały.

Jeśli my tak się zachowujemy, to warto się nad tym zastanowić i coś poprawić.

Jesteśmy tylko ludźmi też popełniamy błędy.

W tym wpisie omówimy “ulubieńca technologii”.

#6 Kod to...Część NR.5

Kiedyś szczytem wszystkich wynalazków stworzonych przez programistyczne języki funkcjonalne była możliwość wykonania funkcji, gdy ona jest w formie napisu string.

Ten napis można było zmieniać i później go wywołać jak zwyczajny kod.

Inaczej mówiąc "eval" .

Wiele języków programowania wspiera operację „eval”, czyli możliwość wywołania funkcji w danym języku, gdy dynamicznie tworzymy wyrażenie tej własnej funkcji.

Najprostszy eval jak powiedzieliśmy wcześniej wymaga do operacji zwykłego napisu string. Języki, które to wspierają pozwalają na wywołanie takiego kodu. Oto przykładowy kod JavaScript.

3 SemestrHistoria NR.7I tak po znalezieniu drugiej pracy i wygraniu XBOX-a w 2012 roku nastały spokojne czasy.

Zacząłem nawet planować co ulepszyć na blogu? Jakie wpisy przygotować?

W pracy absorbowałem dużą ilość wiedzy.  Praca była super. Rozwijałem się.

Wszystko było pięknie.

Dopóki nie przypomniałem sobie, że jeszcze studiuję, a skończyła się właśnie przerwa wakacyjna..

Akcja wpisu dzieje się w październiku 2012 roku

Trzeci semestr.

Biała Spacer[Ten wpis miał być opublikowany 26 października 2014 roku. Z powodów technicznych robię to teraz.]

Kolejny powrót do Białej Podlaskiej po dłuższej przerwie. Po wielu latach jeżdżenia do swojego rodzinnego miasta mniej więcej co 4 miesiące nie czuję już, że Warszawa i Biała to dwie różne krainy w mojej głowie.

Poprzednim razem miałem okazję zobaczyć, co znajduje się w domu studenta w PSW.

Lepsze czasyHistoria NR.6

Od kiedy pojawiłem się w Warszawie mogłoby się wydawać, że nic dobrego mnie nie spotkało.

Studia, praca. Potem szukanie kolejnej pracy.

Po zrezygnowaniu z tej dziwnej propozycji pracy rozpoczęło się kolejne jej szukanie,

Tamten wtorek dobiegał końca. Spojrzałem na listę e-mail z ofertami pracy, zatwierdzałem je i szykowałem się do kolejnego pojedynku. Czułem się bardziej zmotywowany. O dziwo też bardziej zacząłem wierzyć w siebie.

Czasem rzeczywiście dobrze postawić na swoim. Następny dzień nie był jednak taki sympatyczny.

Akcja dzieje się w kwietniu 2012 roku

ClousersCzęść NR.4

Aby język programowania mógł działać z Funkcjami wyższego rzędu musi rozwiązać problem z zasięgiem zmiennych. O co chodzi?

Funkcja wyższego rzędu jest to funkcja, która przyjmuje jako parametry kolejne funkcje. Co się jednak dzieje z parametrami zaszytymi w wewnętrznych parametrach funkcji?

Kiedy funkcje są przekazywane jako parametry, zmienne, wartości zwracane - wtedy kompilator używa domknięcia, aby rozszerzyć zasięg zmiennych tak, by były one dostępne wtedy, gdy są potrzebne.

W tym wpisie spojrzymy na problem z zasięgiem zmiennych i na domknięcia, ale najpierw…zobaczymy jak w C# dynamicznie tworzy się funkcję.

ScreenToGifNarzędzie NR.4Na swoim blogu często korzystałem z GIF-ów, by pokazać jak piszę kod, co wyświetla Intellisense, jak klikam na poszczególne opcje.

Raz nawet zrobiłem prezentację w PowerPoint na temat Visual Studio 2013 i co on potrafi. Aby nie sięgać do Visual Studio na slajdach, w prezentacji za pomocą gifów pokazałem te nowe funkcjonalności.

Umieszczanie gifów na blogu jest więc genialnym pomysłem.

Wcześniej do tworzenia gifów korzystałem z narzędzia camtasia studio.

Camtasia studio powstało z myślą o nagrywaniu pulpitu i tworzenia Tutoriali. Nawet się sprawdza jako program nagrywający Gameplay. Tutaj znajduje się stary filmik, który nagrałem przy pomocy Camtasia Studio.

PastePureNarzędzie NR.3

Ostatnio napotkałem problem z formatowaniem tekstu. Gdy kopiujesz tekst z jednego źródła do drugiego w niektórych programach oprócz tekstu kopiuje się także formatowanie, czyli kolory tekstu, czcionki, rozmiary i wiele innych rzeczy.

Ma to pomagać użytkownikowi, ale w moim przypadku zazwyczaj mi to przeszkadza.

Aby poradzić sobie z tym problemem często otwierałem notatnik i do niego wklejałem tekst (tam jest tracone formatowanie) po to, by skopiować i wkleić go bez formatowanie do właściwego źródła.

Jeśli więc musiałem napisać E-mail, dokument w Wordzie lub wpis na blogu często korzystałem z takiej kombinacji czynności tylko po to, by nie wklejać sformatowanego tekstu.

Wiem, że w programie Word jest opcja “Paste content" ale ta opcja jest równie niewygodna co notatnik.

ZoomItNarzędzie NR.2Prowadzisz prezentację albo chcesz pokazać koledze/koleżance coś ważnego na ekranie, ale jest jeden problem.

Wszystko jest małe i nikt nie widzi w co dokładnie klikasz na swoim ekranie. Szkoda, że nie ma programu, który powiększyłby twój ekran i nie jest domyślnym programem Windows jak LUPA.

Program Lupa jest bardzo niepraktyczny. Na szczęście istnieje inny program, który poradzi sobie z tym zadaniem.

2015 Rok 2015 był rokiem, który udowodnił mi, że mój wysiłek ma znaczenie.

Nie wiem jak inne blogi programistyczne sobie radzą, ale te liczby będą mnie motywować do dalszego działania oraz czego bardzo nie lubię do restaurowania starych wpisów.

Mimo iż w 2015 roku blog pobił swoje rekordy, to był to też rok, w którym przez 7 miesięcy nic nie pisałem. Przez te 7 miesięcy przygotowywałem się do kolejnej migracji bloga. Nie będę jednak ukrywał, że zrobiłem sobie przerwę także by ułożyć wszystkie sfery swojego życia.

O czym w innym wpisie.

Teraz chciałbym wam podziękować. Bez was nie byłoby to możliwe.

ComparisonSmak NR.4

Podobnie jak delegaty: Predicate, Converter - delegata Comparsion istnieje głównie po to, by dać możliwość kolekcjom Array i List<T> możliwość sortowania.

Obecnie jednak nie korzystam z metody Sort, tylko z metody LINQ OrderBy.

Używanie delegaty tak, jak w poprzednich przypadkach nie ma sensu. Sama delegata istnieje dla metod np. Sort.

PrzeciążanieCzęść NR.19

Witaj w przedostatnim  wpisie z tego cyklu. Poza wielkim podsumowaniem czego w Javie nie ma, a jest w C# wypadałoby jeszcze coś powiedzieć o przeciążaniu metod w C# i w Javie, ponieważ różnice są.

Zacznijmy od C#.

Elementy klasy pochodnej mogą redefiniować metodę klasy bazowej. W klasie pochodnej tworzymy metodę o tej samej nazwie i liście parametrów, co metoda w klasie pochodnej.

Metoda ta będzie miała nowe zachowanie. Inne niż metoda z klasy bazowej.

ConstrainsCzęść NR.18

Generics, Typy generyczne referują się do typów, których definicja metody, klasy i interfejs operują zależnie od tego, co podasz do niego.

Typy generyczne mają wiele zalet jedną z nich jest wykrywanie ich działania już na poziomie pisania kodu oraz to, że pozwalają na uniknięcie konwersji typów.

 

GenericsCzęść NR.17

Generics, Typy generyczne referują się do definicji metody, klasy i interfejsów, które operują zależnie od tego, co podasz jako parametr generyczny.

Typy generyczne mają wiele zalet jedną z nich jest wykrywanie ich działania już na poziomie pisania kodu. Dzięki nim też możemy uniknąć konwersji typów.

Try-CatchCzęść NR.16

Przechwytywanie wyjątków pozwala programistom rozwiązać problem związany z tym, że w każdej aplikacji może wystąpić nieprzywidziana sytuacja.

Przykładowo jeśli chcesz otworzyć plik używając FileReader z Javy, albo StreamReader z C#, to istnieje kilka sytuacji, które mogą wywołać błąd działania, czyli wyjątek. Przykładowo plik może nie istnieć.

Windows Live Writer staje się open source jako Open Live Writer Do tworzenia wpisów na blogu korzystam z programu Windows Live Writer. Istnieje jednak pewien problem. Ten program jest stary.

Gdy aktualizowałem system do Windows 10 miałem obawę, ze ten program przestanie działać. Na szczęście tak na razie nie jest, ale ten dzień nadejdzie.

Do pisania wpisów na blogu nie znalazłem dobrych alternatyw. Co prawda teraz zmodyfikowany silnik MiniBlog pozwala mi edytować wpisy na blogu przez stronę WEB na żywo to wciąż brakuje mi w nim kluczowych funkcji.

Month GroupCzasami dla statystyk trzeba pogrupować dane według miesięcy bądź kwartałów. Sprawę utrudnia fakt ,że kolumny przetrzymujące date (DATETIME) zawierają nie tylko miesiące ,ale także rok, dzień oraz godzinie.

Grupowanie po miesiącu  wymaga więc trochę większego wysiłku.

Naturalnie istnieje wiele  sposobów na rozwiązanie tego problemu.

Oto tymczasowa tabelka zawierająca wartość jak i datę, po której będziemy grupować.

ConverterSmak NR.3Przerobiliśmy 3 z 5 szablonów gotowych generycznych delegat. Zostały nam jeszcze dwa. A w tym wpisie opiszę delegatę Converter.

Nie ma w niej niczego specjalnego. Jest to kolejna delegata, która istnieje z powodu starego kodu .NET 2.0 sprzed LINQ.

Celem tej delegaty jest przekonwertowanie jednego obiektu w drugi. Od razu rodzi się pytanie po co używać do tego oddzielnej delegaty gdy mamy delegatę Func.

PredicateSmak NR.2

Predicate to gotowy szablon delegaty/wskaźnika do metody.

Metoda referowana w Predicate musi zwrócić wartość true/false.

Spełnia ona inną role niż klasyczne szablony delegat jak “Action” i “Func”, które opisałem wcześniej. Pytania brzmi na czym polega różnica.

Możesz sobie zadać pytanie dlaczego w ogóle z nich korzystać. Dla czytelności systemu może łatwiej jest użyć delegaty Func<T,Bool>. Dlaczego Predicate w ogóle istnieje?

Wartość

Co ma wartość i znaczenie w programowaniu? Zadowolony klient czy ty.

Kiedy więc się uczysz kolejnego nowego frameworka lub technologii zadaj sobie pytanie, czy to pozwoli ulepszyć twój produkt, który sprzedajesz?. Może to być strona internetowa, aplikacja mobilna, aplikacja na pulpicie.

Co więcej, czy ta nowa technika da jakąś wartość użytkownikowi? Czy użytkownik zobaczy, że aplikacja działa szybciej, a może zachwyci się ciekawymi animacjami. Może dzięki nowej technice szybciej będziesz mógł naprawiać błędy, a więc użytkownik zobaczy szybką obsługę strony.

Behemot

Istnieje inny typ programisty niż ten, który zazwyczaj jest reklamowany w czasopismach, na konferencjach i w prelekcjach.

Jest nim zamaskowany chowający się w cieniu pogromca Behemotów oprogramowania.

Nie jest to uśmiechnięty młody developer. Nie jest to lśniąca gwiazda pokazywana na wydarzeniach.

EnumCzęść NR.15

Typ wyliczeniowy jest to typ, który zawiera określoną liczbę nazwanych stałych. Aby utworzyć typ wyliczeniowy wystarczy użyć słowa kluczowego “enum” zamiast “class”.

Wewnątrz nawiasów klamrowych po przecinku definiujemy listę stałych elementów. Zasady poziomu dostępu typu wyliczeniowego są takie same jak zasady dla klasy.

W Javie stałe wartości enum są pisane z dużych liter.

AbstrakcjaCzęść NR.14

Klasa abstrakcyjna dostarcza implementacje innym klasom. Klasa abstrakcyjna jest więc taką podstawką dla pozostałych klas.

Klasa abstrakcyjna może zawierać zestaw kompletnych metod, które będzie posiadać klasa pochodna. Klasa abstrakcyjna może też mieć zestaw abstrakcyjnych metod, które nie są zdefiniowane w swoim działaniu. Podobnie do interfejsów, w takich metodach istnieje tylko sygnatura metod. Nie ma w nich ciała.

1 DzieńHistoria NR.5

Zdarzyło ci się odejść z pracy po pierwszym dniu? Czy zdarzyło ci się odejść z pracy, zanim zacząłeś pracować?

Miałem kolegę, który, zanim zaczął pracować w firmie, otrzymał jeszcze lepszą ofertę pracy. W wyniku czego zrezygnował z tej pracy, mimo iż jeszcze jej nie rozpoczął.

Ja miałem podobną historię. Niestety nie była ona taka przyjazna i prosta.

Chronologicznie to ta historia zaczęła się zaraz po odejściu z pierwszej pracy. Nadszedł drugi sezon na szukanie pracy.

Szukanie pracy po raz drugi było dużo bardziej stresujące, mimo iż miałem więcej doświadczenia. Miałem ograniczone fundusze i zależało mi, by jak najszybciej zdobyć pracę.

C# Java

InterfejsyCzęść NR.13

Interfejs to typ, którego zadaniem jest rozłączenie implementacji działania od definicji parametrów wyjścia.wejścia.

Jest to specyficzny kontrakt, który jest implementowany przez klasy. Kontrakt ten zawiera tylko informacje o co dana metoda ma się zwrócić i co ma ona przyjąć. Definicja działania jest już określona w klasie.

StałeCzęść NR.12

Zmienna w C# określona słowem kluczowym const staje się stałą, której zawartość jest na zawsze zawarta w bibliotece, w trakcie kompilacji. Ta wartość nie może zostać zmieniona w trakcie działania programu.

Próba przypisania jakiekolwiek wartości do stałej będzie skutkować błędem.

Stałe muszą znajdować się w klasie jako pole lub w lokalnym bloku kodu .

Poziom.DCzęść NR.11

Poziomy dostępu deklarują na jakim poziomie dany element klasy bądź sama klasa jest widoczna.

W Javie mamy 4 typy dostępu. Są one następujące: public, protected, private i private na poziomie paczki.

Ten ostatni poziom nie może być jawnie zadeklarowany za pomocą słowa kluczowego.

Warto zaznaczyć, że poziom dostępu protected daje dostęp do wszystkich klas w danej paczce, nawet jeśli one nie dziedziczą po tej klasie.

DziedziczenieCzęść NR.10

Dziedziczenie pozwala klasie na uzyskanie elementów (pól, metody) innej klasy. W przykładzie poniżej klasa kwadrat dziedziczy po klasie prostokąt.

Prostokąt staje się klasą bazową Kwadratu.

W dodatku wszystkie elementy klasy Prostokąt, jeśli są one dostępne stają się elementami klasy Kwadrat. Wyjątkami są konstruktor i w przypadku C# destruktory.

StaticCzęść NR.9Słowo kluczowe “static” jest używane do tworzenia pól i metod do których dostęp nie wymaga utworzenia instancji klasy.

Statyczne elementy wewnątrz klasy należą do samej klasy. Nie statyczne elementy są kojarzone z każdą kopią obiektu.

Oznacza to, że każde statyczne elementy nie mogą używać elementów powiązanych z instancją/obiektem danej klasy. Na poziomie statycznych elementów instancja klasy i jej elementy nie istnieją.

Z drugiej strony metody niestatyczne mogą korzystać z statycznych metod i pól.

KlasaCzęść NR.8

Klasa jest to szablon używany do tworzenia obiektów. Klasy składają się głównie z dwóch członów: pól i metod. (C# ma tego więcej)

Pola są zmiennymi, które trzymają stan obiektu. Metody definiują, co obiekt potrafi.

Poniżej znajduje się klasa opisująca kwadrat. Ma ona dwa pola x i y oraz metodę GetArea().

MiniBlogCześć. Przyszła kolejna zmiana na blogu. Tym razem bardzo duża.

Zdecydowałem się zrezygnować z silnika blogowego jakim jest BlogEngine .NET na rzecz silnika MiniBlog.

Wielu z was poprzez email albo w komentarzu pytało czy coś się stało, że na blogu jest cisza. Zupełnie tak, jak przed migracją z Bloggera do BlogEnginie.

Activatorium

Po powrocie z Poznania 23 marca 2015 r. stwierdziłem, że dzień się jeszcze nie skończył i wyruszyłem do ABSIRO Chaty.

Co było powodem takiej decyzji?

Otóż Activatorium i gość specjalny Marcin Tchórzewski - założyciel Coder’s Lab.

Activatorium to też doskonałe miejsce by poznać innych ludzi. Zwykle są to przedsiębiorcy, więc jeśli myślisz o założeniu własnej firmy i nie wiesz gdzie zacząć , to jest dobre miejsce.

Możesz tam też przećwiczyć prezentację swojej firmy lub swojego pomysłu na biznes.

Wracając jednak do sedna sprawy. Gościem na tym spotkaniu był założyciel Coder’s Lab. Jego firma organizuje programistyczne szkolenia.

Incjacja

Programiści to mają dobrze? Dlaczego?

Zarabiają więcej niż inni?

W sumie nic dziwnego bo bycie programistą nie jest łatwe.

Dlaczego tak jest?

Obecnie wiele osób chce nauczyć się programować. Jeśli jest to twój pomysł na życie to bardzo dobrze.

Jeśli jest to twoje marzenie to jeszcze lepiej.

Co się jednak dzieje, gdy za taką chęcią stoi tylko słomiany zapał do pieniędzy.

#4 InterceCzęść NR.4

W poprzednim wpisie omówiłem, czym jest intercepcja w programowaniu. Chociaż jak zajrzysz do Googli, to możesz zobaczyć, że słowo to często jest używane w footballu amerykańskim.

Poprzednim razem skorzystaliśmy z Castle.Windsor i DynamicProxy.

Teraz zrobię to samo tylko przy użyciu PostSharpa. Wpis będzie krótki, gdyż omówienie techniczne zostało zrobione wcześniej.

Aby użyć PostSharpa musimy stworzyć klasę aspektową.

#3 CastleCzęść NR.3

W poprzednim wpisie pokazałem prosty przykład AOP z PostSharpem.

Teraz pokażę wam podobny prosty przykład AOP, ale z Interceptorami z Castle.Windosor.

Różnica tej techniki z PostSharpem jest duża.

Kontener wstrzykiwania zależności Castle będzie dodawał aspekty w trakcie wykonywania programu. PostSharp robił to poprzez dodatkowy proces kompilacyjny.

Warto też zaznaczyć, że ten przykład będzie się różnił od poprzedniego przykładu. Dlaczego?

Muszę wyjaśnić czym jest intercepcja metody

#2 PostSharpCzęść NR.2

Czas na proste demo AOP przy użyciu PostSharp i IL Code Weaving.

W poprzednim wpisie omówiłem na czym polega AOP. Jeśli jeszcze wszystkiego nie rozumiesz, to spokojnie dopiero patrząc na konkretne przykłady, sprawa z AOP staje się jasna jak żarówka.

Projekt Demo zaczynamy od utworzenia nowego projektu w Visual Studio.  Demo będzie proste, dlatego wystarczy nam aplikacja konsolowa.

AOPCzęść NR.1

Programowanie aspektowe – to brzmi skomplikowanie, ale w rzeczywistości tak nie jest. Programowanie aspektowe - w skrócie AOP, pomaga spędzić mniej czasu na kopiowaniu i wklejaniu tego samego kodu.

Te powtarzające fragmenty kodu fachowo nazywają się “boilerplate”.

Redukując powtarzalność kodu możesz poświęcić więcej czasu na ważniejsze części projektu i dodać do niego, i do innych projektów wartość dodaną.

AOP w .NET może zostać uzyskane na wiele sposobów. Najpopularniejszymi sposobami są techniki związane z:

  • Castle Windsor i Intercepotrami
  • PostSharpem i Aspektach

WG.NET

Ostatnio zrobiło się dosyć głośnio o grupie WG.NET w Warszawie. Spojrzałem na listę poprzednich prelekcji i zobaczyłem dlaczego. Bardzo poważne zawansowanie na temat programowania w .NET.

O CQRS nie każdy może opowiadać jak przy śniadaniu. No chyba, że jest to Maciej Aniserowicz.

Nic dziwnego, że do tej grupy przychodzą ludzie z dużym stażem programistycznym, albo przynajmniej tak mi się wydaje.

Można nawet śmiało powiedzieć, że prezentują tam najlepsi z najlepszych w Polsce.

OmniSharp

Microsoft i jego zespół pracuje pełną parą, by dotrzymać obietnicy, że będziemy mogli programować w ASP.NET-cie na Mac i na Linux.

Obecnie sprawa jest trochę skomplikowana, ale ASP.NET dzięki projektowi Katana i OWIN – ASP.NET może być uruchamiany w aplikacji konsolowej bez serwera IIS.

Osobiście dzisiaj chciałem sprawdzić i inne zagadnienia związane z pisaniem w ASP.NET poza Visual Studio i poza Windows.

Sway

Co to jest Sway? Według Microsoftu jest to aplikacja, która ma nam pomóc wyrażać swoje pomysły we wszystkich urządzeniach.

Sway ma kombinować dokumenty WORD i prezentacje PowerPoint do form, które każdy może obejrzeć.

Nie jest więc to kalka samego PowerPointa.

Presentation

Prezentacje w PowerPointcie są be.  Przeglądając materiały z różnych konferencji możesz zobaczyć, że obecnie wielu prelegentów nie korzysta już z PowerPointa.

…i nie chodzi tu o alternatywne oprogramowanie na systemy Mac.

Dobrze jest mieć prezentację wystawioną na świat. Co więcej, jeszcze lepiej byłoby, gdyby sama prezentacja była stroną internetową.

Taka prezentacja mogłaby być oglądana z telefonu i tabletu.

Wszystkie Kategorie