Jestem fanem interfejsów jak to wcześniej już pisałem, zatem dzisiaj będzie temat łatwy i przyjemny o interfejsach właśnie. W sam raz na ciężki po długo weekendowy poniedziałek. Interface Segregation Principle mówi, że klient nie powinien być zmuszany do implementowania interfejsów, których nie używa. Z tego wynika, że interfejs powinien być minimalistyczny lub po prostu możliwie chudy. Idealnie by było, gdyby miał jedną metodę a poważnie, można by tutaj parafrazować Single Responsibility Principle i p...
Architektura 4506 dni, 21 godzin, 37 minut temu 210 źrodło rozwiń
W obecnym czasie, z bardzo rozwiniętymi środowiskami programistycznymi, takimi jak choćby Visual Studio, czy też Eclipse, bardzo łatwo jest rozpocząć swoją przygodę z programowaniem, które w tym przypadku czasem bardziej przypomina zabawę z klockami, niż rzeczywiste . Jednak nastawiając się na bezmyślne składanie klocków, szybko można obudzić się z przysłowiową , w sytuacji gdy zajdzie potrzeba modyfikacji lub rozszerzenia tak radośnie tworzonego kodu, a warto zaznaczyć, że nieumiejętnie sklejony kod mo...
Architektura 4506 dni, 21 godzin, 37 minut temu 475 źrodło rozwiń
To jest mój pierwszy post, ale od czegoś trzeba zacząć. Wybacz więc niedociągnięcia :). Na pierwszy temat rzucam porównanie wydajności kilku bibliotek (framework'ów) do wstrzykiwania zależności (Dependency Injection), które jest częścią paradygmatu odwróconego sterowania (Inversion of Control) - więcej można przeczytać tutaj. Ostatnio przeczytałem, że znaczna większość programistów korzysta z tych dobrodziejstw. Niby dobrze, o ile wiemy z czym mamy do czynienia. Część bibliotek jest przeładowana ...
Architektura 4506 dni, 21 godzin, 37 minut temu 387 źrodło rozwiń
Od młodego uczą nas, że każdy kwadrat jest prostokątem. Później uczymy się programować i zaczyna się tragedia. Matematycznie kwadrat jest specyficznym przypadkiem prostokąta programistycznie już nie bardzo.
Architektura 4506 dni, 21 godzin, 37 minut temu 242 źrodło rozwiń
Zasada odwracania zależności głosi, że moduły wysokopoziomowe nie powinny zależeć od modułów niskopoziomowych. Obie grupy modułów powinny zależeć od abstrakcji. Innymi słowy abstrakcje nie powinny zależeć od szczegółowych rozwiązań, to one (rozwiązania) powinny zależeć od abstrakcji. Użyte w treści reguły pojęcie abstrakcji należy interpretować jako klasę abstrakcyjną lub interfejs. Jak widać pozostaje tutaj swoboda wyboru jednego z tych dwóch bytów...
Architektura 4507 dni, 20 minut temu 180 źrodło rozwiń
Ostatnio zainspirował mnie post Gutka (jego blog jest dostępny pod adresem http://blog.gutek.pl) który przyczynił się do spełnienia marzenia mojej żony – posprzątania biblioteczki. W skrócie mam parę książek do oddania.
Witam po długiej przerwie. W dzisiejszym wpisie postaram się krótko opisać w jaki sposób stworzyć bootstrapper aplikacji przy użyciu CaliburnMicro. Ponadto przedstawię w jaki sposób skonfigurować bootstrapper w taki sposób, aby Caliburn wykorzystywał nasz własny kontener IOC. Wstęp CaliburnMicro jest to framework MVVM, który w znacznym stopniu ułatwia i przyśpiesza pisanie aplikacji pod WPF,Silverlight,WindowsPhone oraz WinRT. Zdecydowałem się poznać ten framework z uwagi na jego przenośność n...
Silverlight 4507 dni, 8 godzin, 18 minut temu 95 źrodło rozwiń
Sharing Sharing jest charms umożliwiającym udostępnianie danych z własnej aplikacji do innej. Funkcja ta jest dostępna po wysunięciu się prawego paska pomocy (Win + C). Dzięki tej funkcji możliwa jest komunikacja pomiędzy aplikacjami i przesyłanie pomiędzy mini danych jak.tekstlinkizdjęciaplikizawartość w formie HTMLlub własna struktura Jak widać mamy durze pole do popisu oczywiście możemy łączyć ze sobą przesyłane dane np.: tekst i zdjęcie itd.. W przypadku ostatniej możliwości czyli własna stru...
W wielu publikacjach service locator podawany jest jako wzorzec projektowy, doskonale nadający się do implementacji inversion of control. W poście jednak chciałbym przedstawić drugą szkołę, która uważa, że ten wzorzec jest “brzydki” i powoduje ogromne zamieszanie. Przede wszystkim odpowiedzmy sobie kiedy używamy podejścia IoC? W aplikacjach tymczasowych? Prototypach? Raczej nie… Początkowy czas na napisanie aplikacji IoC może okazać się dłuższy a korzyści nadchodzą dopiero po kilku miesiącach implementa...
Architektura 4508 dni, 17 godzin, 7 minut temu 312 źrodło rozwiń
Semantic Zoom Semantic Zoom jest to nowa funkcja jaką można spotkać w Windows 8. Umożliwia oddalanie i przybliżanie obiektów na ekranie. Idealnie spisuje się jeśli mamy do zaprezentowania dużą liczbę elementów i nie chcemy aby użytkownik długo przewijał w poszukiwaniach. Semantic Zoom pozwala nam oddalić wyświetlanie elementy przez co mieści się ich więcej na ekranie i przewijanie jest szybsze. Żeby muc korzystać z tej funkcji wystarczy dwoma palcami albo odsuwać je od siebie albo przybliżać. Oczy...
Snap & Fill Jest to ciąg dalszy moich artykułów na temat programowania pod metro dla Windows 8. Dziś mam dla was funkcje snap i fill. Czym są? A są to nowe tryby w ramach których może pracować nasza aplikacja. Tryb snap (snapping) pozwala na podgląd zawartości aplikacji. Aplikacja jest zadokowana do lewej lub prawek krawędzi i ma 320 pikseli szerokości. Nie może mieć więcej lub mniej szerokości. Tryb ten jest dostępny dopiero od rozdzielczości 1366×768. W mniejszej rozdzielczości funkcje snap i fill...
Wielu programistów i firm z branży IT często mówi, że potrafi wytwarzać oprogramowanie wysokiej jakości i że bardzo ważnym jest, aby o tą jakość zabiegać. Nie ma w tym nic dziwnego – wszyscy jesteśmy gotowi zgodzić się, że jakość powinna być możliwie wysoka. Problem pojawia się jednak w momencie, gdy trzeba doprecyzować pojęcia.
Architektura 4510 dni, 20 godzin, 4 minuty temu 259 źrodło rozwiń
W SQL Server 2012 pojawiło się sześć nowych funkcji związanych z operacjami na typach daty i czasu. Są to funkcje: DateFromParts, SmallDateTimeFromParts, DateTimeFromParts, DateTime2FromParts, DateTimeOffsetFromParts, EOMonth.
Bazy danych i XML 4511 dni, 19 godzin, 20 minut temu 169 źrodło rozwiń
Co poniższy kod zwróci na ekranie? Spodziewać się można 0,1,2. Jednak na ekranie ujrzymy 5,5,5. Dlaczego?
Sprostowanie nieścisłości dotyczącej pojęcia polimorfizmu, która pojawiła się w kursie C# na portalu virtualstudy.pl
Architektura 4511 dni, 19 godzin, 20 minut temu 134 źrodło rozwiń
… na szczęście nie przez wszystkich. Intencją niniejszej serii jest przedstawienie podstaw programowania w trochę inny sposób, dlatego mówiąc najbardziej niedoceniana umiejętność w domyśle tyczy się to początkujących. Starsi albo sami dotarli do odpowiedniej wiedzy albo życie ich nauczyło. Jak wyglądają pierwsze kroki w programowaniu? Po opanowaniu pętli for i foreach, ifów i caseów, Console.WriteLineów oraz tych wszystkich klas i obiektów i nie zapominając o polimofizmach wielu rzuca się w wir poznawan...
Architektura 4512 dni, 9 godzin, 9 minut temu 270 źrodło rozwiń
Większość aplikacji Windows Forms, kojarzą nam się z prostokątną formą koloru szarego z naniesionymi kontrolkami i tytułowym paskiem. Nie jest to jednak reguła. Nasze aplikacje mogą mieć nieregularny kształt (chmurka, serduszko, etc). Dzięki temu można uzyskać bardzo ciekawie wyglądający program, a odpowiednie skonfigurowanie formy opiera się na kilku prostych krokach. Właśnie to opiszę w dzisiejszym artykule. Całość będę oprogramowywał w C#. Przygotowanie kształtu formu Przygotowanie musimy ...
Zamierzam napisać kilka krótkich postów o nowych funkcjonalnościach w Visual Studio 11. Na dobry początek zacznijmy po prostu od screenu: Co od razu rzuca się w oczy? Czarno białe ikony. Dla porównania zobaczymy jak wygląda “stary” Visual Studio: Na pierwszy rzut oka to poprzednia wersja wygląda dużo nowocześniej ze względu na kolorowe, bardziej 3d ikonki. Dlaczego Microsoft zdecydował się na taki krok? Z tego co wiem, doszli do wniosku, że środowisko programistyczne nie powinno być zabawką i nie m...
W c# 5.0 dodano dwa nowe atrybuty: CallerMemberName oraz CallerFilePath. Można je stosować do domyślnych parametrów metod:staticprivatevoid Print([CallerMemberName]string methodName =null, [CallerFilePath]string fileName =null) { Console.WriteLine(methodName); Console.WriteLine(fileName); } Wywołanie powyższej metody bez podania argumentów spowoduje przekazaniem nazwy metody, która wywołała Print oraz ścieżki pliku w którym znajduje się ta metoda:Print(); Jeśli Print został wywołany w metodzie ...
Po Single Responsiblity Principle najważniejsza (moim zdaniem) zasada programowania obiektowego – Dependency Inversion Principle. Mówi ona, że obiekty powinny być zależne od abstrakcji a nie od konkretnej klasy. A po ludzku, w żadnej definicji funkcji i w żadnej deklaracji zmiennej nie powinniśmy używać nazwy klasy. Zamiast tego powinniśmy używać interfejsy albo klasy abstrakcyjne czyli zamiast private IPerson _owner; public bool ValidateOwner(IPerson personToValidate) { //..... } piszemy private IPe...
Architektura 4514 dni, 39 minut temu 196 źrodło rozwiń