Cezary Walenciuk Programowanie

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.

Sublime TextMasz już dosyć setki utworzonych aplikacji konsolowych w Visual Studio tylko po to by sprawdzić jak dana klasa lub kod działa?

ConsoleApp

Czy istnieje jakiś lepszy sposób na prototypowanie kodu? Czy istnieje jakiś lepszy sposób na pokazanie kodu demo?

A może do tego chciałbyś mieć w pełni interaktywne doświadczenie z kodem C#.

ScriptCS

Pojawienie się kompilatora Roslyn otworzyło wiele nowych ścieżek.

Jedną z tych ścieżek jest biblioteka ScriptCS.

Dzięki niej jest możliwe używanie C# jako języka skryptowego w konsoli. Dzięki niemu edytory takie jak Notepad++ mogą kompilować kod napisany w C#.

Co najważniejsze można użyć tej biblioteki do własnych celów.

WorkspaceCzęść NR.5

Czym jest Workspace API?

Co to jest Workspace?

Workspace reprezentuje solucje w Visual Studio. Klasy więc z tego api będą modelowały układ danej solucji.

Oczywiście rola tych klas nie kończy się tutaj. Przy użyciu tych klas możemy dodawać referencje do projektów i usuwać pliki.

SemanticCzęść NR.4

Znając już Syntax Tree API oraz API kompilacyjne powstaje pytanie, jak można uzyskać pewne semantyczne informacje na temat kodu, używając obu API.

Przykładowo chcę uzyskać informację, czy podane wyrażenie wewnątrz metody jest wyrażeniem stałym. Jeśli nim nie jest, to zapewne jest ono powiązane z działaniem specyficznej metody operacyjnej jak znak “dodawania”.

EmitCzęść NR.3

Wewnątrz kompilatora Roslyn oczywiście istnieją klasy, które na podstawie podanego kodu potrafią utworzyć biblioteki.

Są one znakomitą alternatywą dla System.Reflection.Emity  i CodeDOM.

Generowanie kodu jeszcze nie było takie łatwe.

Klasy kompilujące potrafią także bardzo szczegółowo poinformować użytkownika, dlaczego dany kod się nie skompilował.

Syntax TreeCzęść NR.2

W poprzednim wpisie omówiłem w skrócie kompilator Roslyn i to jakie problemy on rozwiązuje.

W poprzednim wpisie też napisaliśmy proste rozszerzenie do Visual Studio, które korzysta z kompilatora Roslyn.

Zanim jednak zaczniemy zabawę na całego z każdym API kompilatora Roslyn, trzeba zacząć od podstaw. Taką podstawą jest API Syntax Trees .

Roslyn Kompilator .NET : csc.exe i pierwsze rozszerzenie fix

Kompilatory C# i Visual Basic były napisane w C++. Co jest logiczne. Bo C# i Visual Basic były nowymi językami. Nie możesz napisać kompilatora nowego języka w samym języku, który dopiero się tworzy.

Wybór ten jednak stworzył pewien problem.  Ekipa pracująca nad językiem C# musiała też znać C++.

Aby dodać nową funkcjonalność języka C# lub Visual Basic trzeba było się mocno wysilić.

Kompilatory nie mogły używać swojego języka.

D3 Line ChartCzęść NR.3

W poprzednim wpisie narysowaliśmy wykres liniowy przy użyciu SVG i skryptu JavaScript D3.

Czas dodać pewne małe zmiany do naszego wykresu liniowego. Po pierwsze do wyświetlania danych zazwyczaj otrzymamy tablice obiektów, a nie tablice wartości.

Sam wykres nie ma też kropek w miejscach, gdzie powinny być wartości. Osie X i Y nie mają strzałek. Wykres nie ma tytułu. Osie nie są podpisane.

Są to drobne rzeczy, ale bez nich wykres może wyglądać blado. Zacznijmy więc przerabiać kod.

Jak obsłużyć tablice obiektów?

PDF DataSet

W poprzednim wpisie o report Viewer utworzyliśmy prosty plik PDF.

Sprawa jest trochę bardziej złożona, jeżeli chcemy wyświetlić kolekcję elementów w pliku PDF przy użyciu ReportViewer.

Na czym polega problem?

ReportViewer jest starą kontrolką. Gdy zaczynamy z nią działać, to ta kontrolka, aż się prosi o używanie głupich przestarzałych rozwiązań jak np. "ObjectDataSource".

D3 Line ChartCzęść NR.2

W poprzednim wpisie narysowaliśmy prosty wykres słupkowy przy użyciu D3.

W tamtym przykładzie nie użyliśmy SVG. Można narysować prostokąty przy użyciu elementów div. Sprawa jednak się komplikuje, gdy chcemy narysować nawet proste linie.

Nie ma co ukrywać, że w takim wypadku lepiej zabrać do swojego arsenału SVG.

SVG pozwala na rysowanie przeróżnych figur i elementów, które normalnie w HTML nie są łatwe do narysowania.

JS MVCT4

Wcześniej omówiłem skrypt T4, który tworzy klasy na bazie kontrolerów ASP.NET MVC. Czy istnieje skrypt T4, który utworzy pomocniczy kod tylko po stronie JavaScript?

Na czym polega problem? Chodzi o ścieżki URL do akcji poszczególnych kontrolerów MVC.

Istnieje też problem z powtarzalnością kodu JavaScript wywołującym zapytania AJAX do serwera.

Taki skrypt istnieje i dzisiaj go omówię.

.active Prosty problemy. Mamy pasek nawigacyjny stworzony na podstawie styli bootstrap.

Jak ustawić na wybranym przycisku nawigacyjnym klasę CSS active. Klasa ta podkreśli przycisk. Naturalnie chcemy podkreślić przycisk nawigacyjny, jeśli znajdujemy się na stronie, do której on referuje.

C# 6.0 Kolejna prezentacja jako strona HTML28 października w grupie .NET WODNUG pokazałem prezentacje na temat C# 6.0.

Wczoraj w pracy pokazałem ten sam materiał.

Postanowiłem jednak pójść o  jeden  krok do przodu. Prezentacja o C# 6.0 tak naprawdę jest stosem slajdów pokazującym nową składnię języka.

Pomyślałem sobie, "przecież ta prezentacja nie musi być w powerpoint-cie".

http://six.cezarywalenciuk.pl/

W dwie godziny zrobiłem tę prezentację. Bazuję ona na szablonie prezentacji HTML od firmy Google.

Sam szablon musiałem trochę przerobić tak, aby on działał z moim nowym stylem kolorowania składni.

Stack modulesBootstrap oferuje łatwy skrypt do wywołania okien modalnych w stronach internetowych.

Czasem jednak istnieje potrzebna wywołania kolejnego okna, gdy już jedno z nich zostało otwarte.

Pamiętam, jak kiedyś uruchamiałem okna modalne przy użyciu kontrolek Telerik. W scenariuszu, w którym było potrzebne kolejne okno modalne, wtedy „łamałem sobie głowę”. Wywołanie okna modalnego, mając otwarte inne okno modalne, powodowało utworzenie okna modalnego w oknie modalnym. Całe szczęście, że nie programuję już z wykorzystaniem tych starych rozwiązań.

Mając jednak nawet bootstrapa i rozwiązanie godne naszych czasów wciąż zadaję sobie pytanie, jak to można zrobić.

T4MVC W ASP.NET MVC w wielu miejscach podajemy informację o widokach, kontrolerach, skryptach JavaScript, stylach css pod postacią zwykłego napisu string.

Co prawda obecnie Visual Studio oferuje Intellisense co do tych odwołań, więc się nie pomylisz.

Jest to jednak wciąż zła praktyka.

#2 DataTable

W poprzednim wpisie zebraliśmy wszystkie pliki potrzebne do uruchomienia skryptu DataTable wraz ze stylami bootstrap.

Obecnie tabelka jest obudowana mechanizmem DataTable. Dzięki temu możemy filtrować i sortować dane po tej tabelce.

Tabelka ma jednak wpisane dane na stałe. Powstaje więc pytanie, jak dynamicznie dane przekazać do tabelki? Można to zrobić na wiele sposobów.

HighlightKolejna zmiana na blogu na lepsze. Wcześniej do koloryzowania składni kodu na blogu korzystałem z trzech technik.

Każda z nich okazała się kiepska. Jedna z nich przestała nawet działać gdyż BlogEngine przestał wspierać SyntaxHiglighter.

Przez wiele miesięcy  siłowałem się z koloryzowaniem składni kodu Objective-C. SyntaxHiglighter nie wspierał tego języka programowania. Technika koloryzowania składni z której zazwyczaj korzystam  nie działała ze względu na to, że nie można zainstalować Windows Live Writera na komputerach MAC.

Postanowiłem do bloga dodać nowe koloryzowanie. Dużo się zmieniło na przestrzeni lat. Teraz widzę, że te rozwiązanie rozwiązuje wiele problemów. Mówię tutaj o koloryzowaniu składni przy użyciu Highlight js.

DataTableChciałbyś stworzyć prostą stronę z tabelką. Chciałbyś, aby tabelka miała możliwość filtrowania i sortowania. Jak osiągnąć ten rezultat bardzo szybko.

Po raz kolejny zapomnij o Ajax-owych kontrolkach ASP.NET. Zapomnij o klasycznym ASP.NET-cie. Czy nadal programujesz i tworzysz strony internetowe jak jaskiniowiec.

Inject #2Część NR.2Witam w drugim wpisie mojego eksperymentu. Tym razem będę objaśniał wstrzykiwanie zależności do konstruktora  oraz omówię podstawowe użycie Castle.Windsor. Oto seria  wpisów, które będą uczył programowania równocześnie opowiadając przy tym  historię.

W poprzednim odcinku.

W trakcie jazdy samochodem, w moim koszmarze objaśniłem, dlaczego klasa jest specyfikacją danego bytu. Powiedziałem także, dlaczego pola klasy muszą być prywatne. Podczas objaśniania tych funkcji potrąciłem autostopowicza.

Będąc w szoku, aby się odstresować, wydzieliłem swoje cechy i cechy autostopowicza do klasy abstrakcyjnej, która reprezentuje kategorie osoby i wspólnych cech.

Obiekty #1Część NR.1Oto mały eksperyment. Postanowiłem stworzyć serię  wpisów, w których będą uczył programowania, równocześnie opowiadając historię. To nie są normalne wpisy objaśniające, jak coś działa krok po kroku. Witam więc w tej emocjonalnej  wędrówce, która być może czegoś ciebie nauczy. 

Kiedyś ktoś mnie zapytał, dlaczego lubię programować?

Ja odpowiedziałem, że lubię programować, ponieważ kod ma logicznych sens w przeciwieństwie do ludzi i do rzeczywistego świata. Kod mnie rozumie i o nic mnie nie pyta?

Myślenie w ten sposób dawało wiele swobody. Wszystko jest logiczne, więc wszystko jest bezbłędne. Jeśli coś podam do systemu ,to wiem co z niego wyjdzie. Jestem perfekcyjny

TabliceCzęść NR.4Tablica jest strukturą danych używana do sortowania kolekcji wartości. Występuje ona oczywiście  C# i w Javie. Działają one tak samo. Dlatego powstał ten wpis.

Jest ona dosyć prymitywna. Ja osobiście nie pamiętam kiedy ostatnio użyłem tablicy. Każdy jednak kto studiował programowanie na uczelni to zapewne zaczynał swoją przygodę z tą kolekcją.

OperatoryCzęść NR.2Operatory są używane do operowania wartościami.

Można je pogrupować do pięciu typów operatorów: arytmetyczne, przypisania, porównania, logiczne i bitowe.

 

Witam w drugiej części cyklu, która ma uświadomić czytelnika, że składnia językowa pomiędzy Java, a C# nie wiele się różni. Jeśli dobrze znasz Jave lub C#, a nie znasz tego drugiego języka mam nadzieje, że ten wpis ciebie przekona, że ten skok potrzebny do nauki kolejnego języka programowania nie jest taki duży.

DyrektywyCzęść NR.5Czego nauczyliśmy się do tej pory?

Wiemy, że jeśli chcemy, aby jakieś dane pojawiły się na stronie, musimy użyć parametru $scope.

Do parametru $scope umieszczamy nasz model.



<script>
var MainController = function ($scope) {

    $scope.mytext = "Angular JS Rulez";

}
</script>

Model nie dotyka HTML.

ModułCzęść NR.4Nasz kontroler “MainController” żyje obecnie wewnątrz globalnej przestrzeni nazwy. To jest raczej złym pomysłem. Kiedy budujesz swoją aplikację z Angular to nie chcesz tego robić.

Jeśli spojrzysz na inne aplikacje zbudowane przy użyciu Angular zauważysz, że żaden z kontrolerów nie jest w globalnej przestrzeni nazw.

UtrataHistoria NR.4Komentarz od czytelnika Alexego: Jakiś czas temu obiecałeś, że opiszesz jak straciłeś z dnia na dzień pracę - kiedy będzie artykuł? :(

Woo, woo koleś spokojnie. Zanim zacznę opisywać cokolwiek, warto uświadomić sobie pewne rzeczy.

 

Utrata pracy, nawet jeśli miała miejsce kiedyś w przeszłości, nie jest łatwa do opisania. Wiem, bo mój kolega kiedyś na swoich rozmowach kwalifikacyjnych był pytany, dlaczego pracował w firmie X tylko dwa miesiące. Co dla niego było wielkim zaskoczeniem, bo myślał, że po 2 latach ten temat ma już zamknięty.

WywołanieCzęść NR.3Witam w trzeciej części kursu o Angular 1.X. Poprzednim razem omówiliśmy kontrolery. Postanowiłem też dodać informacje o tym, do jakiej wersji ten kurs się odwołuje. Wersja Angular 2.0 jeszcze się nie pojawiła, ale twórcy tej wersji wywracają wszystko do góry nogami.

Przykładowo: nie będzie w niej kontrolerów.

Oficjalnie twórcy, mimo wszystko radzą używać obecnej wersji. Twórcy też wierzą, że 1.X. jest nadal dobra i nie ma potrzeby aktualizować jej do wersji 2.0, gdy będzie to możliwe. Taką informację otrzymałem od autora książki o Angular, na spotkaniu WODNUG.

Przejdźmy do naszego kursu.

Wiemy już czym są kontrolery i jakie funkcje spełniają. Przejdźmy do wywołań HTTP.

PhotosW dzisiejszych czasach bardzo łatwo jest robić zdjęcia mając telefon. Można sfotografować wszystko, nawet swój obiad. Ważna jest jednak jakość, a nie ilość.

Dwa miesiące temu pomyślałem o wywołaniu zdjęć, które są umieszczane na Facebooku. To zdjęcia, na których jestem, a na razie istnieją one tylko w Internacie.

W jakim celu? Otóż wpadłem na pomysł stworzenia ściany wspomnień. Chciałem zakleić ścianę zdjęciami, które przypominają mi wydarzenia z przeszłości. Żyję w takim tempie, że czasem zapominam, co robiłem tydzień temu. Pomyślałem sobie, jakby to było super codziennie przypominać sobie swoje najlepsze momenty z życia, które tak naprawdę wydarzyły się całkiem niedawno.

Wszystkie Kategorie