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.

#3 LambdaCzęść NR.3

Nie wszystkie funkcje są tak ważne, że muszą mieć nazwę. C# wspiera anonimowe funkcje od wersji 2.0. A od wersji 3.0 anonimowe funkcje pojawiły się w lepszej wersji. W wersji wyrażeń lambda.

Te funkcje nie żyją na poziomie klas i dlatego nie mają nazw. Referencje do takich funkcji zazwyczaj przetrzymuje się w postaci zmiennych typu danej delegaty.

Istnieją pewne ograniczenia dotyczące tego, gdzie anonimowe funkcje mogą się znajdować i jakie mają być.

Przykładowo nie mogą one być generyczne.

#2 DelegateCzęść NR.2

C# jest językiem obiektowym. C# nie pozwala na użycie “funkcji” poza klasami. Jest to wielka różnica w porównaniu z C++ - pierwszym językiem programowania zorientowanym obiektowo. C++ pozwala na pojawianie się funkcji poza klasami ze względu na wsteczną kompatybilność z językiem C.

Można się kłócić, że skoro C# ma klasy statyczne z statycznymi metodami to programowanie imperatywne istnieje, ale jest ono ukryte za obiektową terminologią.

Funkcje w C# mogą istnieć tylko wewnątrz klas i co ważniejsze nie nazywamy je funkcjami, tylko metodami. Metody w C# zawsze muszą coś zwracać. Na szczęście ta zasada jest omijana poprzez typ void. Dzięki temu w metodzie nie musimy używać słowa kluczowego return.

Co to jest?Część NR.1Programowanie funkcyjne istnieje od bardzo długiego czasu. Język programowania LISP w 1958 roku postawił punkt startowy w programowaniu funkcjonalnym.  Z drugiej strony LISP już wtedy bazował na koncepcjach, które istniały. Pierwsze kroki w kierunku programowania funkcjonalnego  można datować na lata 1930-1940. Wtedy Alonzo Vhruch opracował lambda Calcus.

http://en.wikipedia.org/wiki/Lambda_calculus*

Co to jest programowanie Funkcyjne

Programowanie funkcje jest kolejnym paradygmatem programowania, który występuje w wielu językach programowania. Jak sama nazwa wskazuje koncentruje się na funkcjach.

Dla niektórych programistów programowanie funkcyjne wydaje się być naturalne. Funkcyjne programowanie według nich bardziej koncentruje się na problemie, który powinien być rozwiązany niż na poszczególnych krokach rozwiązania problemu.

LayoutsNowość NR.4

Visual Studio 2015 przedstawia kolejną fajną funkcjonalność, która szczerze mówiąc powinna być od początku jeśli się spojrzymy na inne popularne edytory.

Otóż teraz możemy ustawiać układ okienek (toolbox, Solution explorer, Server Explorer)w Visual Studio i zapisywać podany układ aby go użyć w przyszłości.

Jest to szczególnie pomocne gdy pracujesz przy wielu monitorach lub na wielu urządzeniach.

ReWrite

W poprzednich wpisach pokazałem jak przy użyciu wyrażeń drzewiastych wyciągać kod.

Jak jednak kod ten zmienić.

Do spacerów po kodzie używaliśmy klas opartych na wzorcu “Vistor”. W tym wypadku podobne rozwiązanie jest zalecane.

Chociaż na siłę można zmieniać wyrażenie drzewiaste jakby to były pliki XML. Jest to jednak trudne i kod taki nie jest czytelny.

SmartTestNowość NR.3

Co jest nowego w Visual Studio 2015 .

Zacznijmy od możliwości wygenerowania testów jednostkowych na bazie inteligentnego algorytmu.  Co niektórzy już płaczą, że test jednostkowy to MSTest, a nie jakiś NUnit, ale wierzcie mi jest dobrze.

Jak z tej funkcji skorzystać. Zaznaczamy metodę lub całą klasę i z menu wybieramy “Smart Unit Test”.

Shared ProjectNowość NR.1

Visual Studio przez lata rozwinęło się bardzo - na przestrzeni projektów Cross-platformowych.

Dzięki Portable Class Library tworzenie projektów, obsługujących wiele platform mobilnych, jak Android, iOS przy użyciu rozwiązania Xamiarin, jest teraz bardzo łatwe.

Na pewno wszystko jest teraz wygodniejsze w tych kwestiach, niż np. 3 lata temu.

Scalanie kodu z aplikacjami WPF, Windows Phone, Android, iOS, ASP.NET, itp. teraz jest bardzo łatwe.

C#

Func ActionSmak NR.1

Dlaczego znowu piszę o delegatach. Otóż widzę, że wiele osób wchodzi na mojego bloga, by się dowiedzieć “co to jest i jak to działa”. W 2011 roku, na szybko napisałem pewien wpis, który swoim przykładem miał zobrazować zależności wynikające z mechanizmu delegaty. W wielkim skrócie wpis mijał się z celem.

Dlatego postanowiłem napisać kolejny wpis o delegatach bez żadnych udziwnień.

Postanowiłem też w tym wpisie poruszyć ważne zagadnienie, które jest reprezentowane przez gotowe delegaty jak “Action<T>” i Func<T,T>.

AddDocumentCzęść NR.6Rolsyn API umożliwia z poziomu C# na kompilowanie kodu. Roslyn także zawiera klasy, które potrafią odwzorowywać projekty w solucji tak w Visual Studio.

W poprzednim wpisie opisałem jak użyć Workspace API, ale pracując z tymi klasami zauważyłem, że wiele rzeczy po prostu nie działa.

Po pierwsze wiele rzeczy obecnie nie jest wspieranych w tym API mimo iż metody istnieją.

DyreCzęść NR.6

Witam w kolejnym wpisie kursu Angular JS 1.X. Kurs zbliża się już do końca. Jeszcze dwa wpisy plus ten i wstęp do Angulara uznaję za zakończony.

Jest to ostatni wpis na temat dyrektyw Angular. Jest ich sporo więcej, ale nie omówię ich tutaj wszystkich.

Jedną z omawianych dyrektyw w tym wpisie jest ng-repeat.

Sprawdza się ona znakomicie przy wyświetlaniu kolekcji elementów.