… 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 3923 dni, 23 godziny, 3 minuty temu 267 ź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 3925 dni, 14 godzin, 33 minuty temu 196 źrodło rozwiń
W tym wpisie omówię kolejne cztery funkcje, które pojawiły się w najnowszej wersji języka T-SQL. Będą to dwie funkcje logiczne (IIF i CHOOSE) oraz dwie funkcje operujące na ciągach znaków (CONCAT i FORMAT).
Bazy danych i XML 3926 dni, 7 godzin, 41 minut temu 131 źrodło rozwiń
Projektując programy w technologiach XAMLowych z wykorzystaniem MVVM Light Toolkit (w zasadzie liczy się wzorzec), zawsze napotykam problemy, na które trudno znaleźć jednoznaczną odpowiedź. Najczęściej kłopoty sprawia widok, który nie zawsze „chce” się zmieścić w kodzie xaml. Prostsze zadania można rozwiązać przy pomocy zachowań (?) czy też triggerów. Sprawy się komplikują w przypadku storyboardów. Co zrobić, jeżeli chcemy uruchomić ...
Architektura 3926 dni, 7 godzin, 41 minut temu 301 źrodło rozwiń
Często widzę następujący kod. Oczywiście jeśli mamy pewność, że zawsze jest klucz nie ma z tym problemu. Czasami jednak takiej pewności nie ma i należy zwrócić NULL albo stworzyć dany element w słowniku. Wtedy zaczynają się problemy bo najczęściej jest to dokonywane za pomocą:
Wczoraj mówiliśmy o single responsibility principle (SRP) czyli o zasadzie pojedynczej odpowiedzialności. Jest to zasada, która moim zdaniem najwięcej zmienia w dotychczasowych przyzwyczajeniach programistycznych. Na początku jest trochę męcząca ponieważ zgodnie z nią w klasie nie powinniśmy tworzyć innych obiektów.Jak to? Nie mogę używać słowa kluczowego new? Nie mogę tworzyć obiektów? No właściwie to nie. Jeżeli chcesz w klasie tworzyć obiekty to to już jest odpowiedzialność. Wiec klasa nic poza tworz...
Architektura 3927 dni, 15 godzin, 53 minuty temu 99 źrodło rozwiń
Po jakimś czasie od udanego wdrożenia dedykowanego rozwiązania zbudowanego dla platformie SharePoint 2010 tak jak w przypadku innych platform pojawia się temat aktualizacji. Ze względu, że SharePoint stanowi swojego rodzaju Framework można by było oczekiwać wsparcia w zakresie aktualizacji. W przypadku wersji 2007 nie mieliśmy na co liczyć ale wiele się zmieniło w momencie opublikowania SharePoint 2010. Temu tematowi chciałem poświęcić niniejszy post.
Od .NET 2.0 dostępna jest klasa SqlBulkCopy, która pozwala na efektywne ładowanie dużych zbiorów danych do bazy SQL Server. Główną zaletą tej klasy jest wydajność operacji kopiowania danych...
Bazy danych i XML 3929 dni, 5 godzin, 59 minut temu 198 źrodło rozwiń
Wczoraj mówiliśmy o tym, że funkcja powinna wykonywać jedną rzecz. Świetnym papierkiem lakmusowym jest nazwa funkcji. Jeśli można łatwo nadać jej nazwę i nie zawiera spójników typu i, lub, albo, oraz (lub ich odpowiedników w j. angielskim ) to jesteśmy na dobrej drodze. Funkcje, które wykonują kilka czynności są wprowadzają po prostu w błąd.A co z klasami? Single Responsibility Principle mówi, że klasa powinna mieć jedną odpowiedzialność, powinna mieć jeden powód do zmiany. Takie podejście powoduje, że...
Czasami mamy do dyspozycji tylko asynchroniczne wywołanie interesującej nas metody, a chcemy synchronicznie. Kawałeczek kodu, który realizuje to w przejrzysty sposób.
Mobile development 3929 dni, 5 godzin, 59 minut temu 132 źrodło rozwiń
Pytanie brzmi: czy metody statyczne są wydajniejsze niż ich “zwykłe” odpowiedniki (instance methods)? Odpowiedź brzmi tak, ponieważ:Wywołanie jakiejkolwiek niestatycznej metody na klasie powoduje przekazanie parametru “this” – a to wymaga dodatkowego czasu.Same wywołanie jest bardziej czasochłonne dla zwykłych metod. W klasach statycznych nie ma dziedziczenia i wirtualnych metod. W niestatycznych metodach, kompilator musi dokonać kilka dodatkowych operacji. Każda metoda niestatyczna jest wywoływana za p...
W zeszły czwartek opublikowałem post pod tytułem “Warsztat czyli moje narzędzia pracy”. Opisałem narzędzia, które są dla mnie obecnie najbardziej przydatne. Jednak nie są to wszystkie narzędzia dlatego poniżej zamieszczam listę sporadycznie używanych ale takich, które spełniają swoją role i mogą się przydać również Tobie:Notepad2 jak dla mnie perfekcyjny zamiennik notatnika systemowego. Ma numerowanie linii i kolorowanie składni (dodatkowo czas używam również jako narzędzia do konwersji pomiędzy różnymi...
Niniejszy post jest 200-tną notatką na blogu.... Tak zacna i okrągła okazja zostaje niniejszym wykorzystana jako pierwszy z cyklu postów o podstawach programowania. Jednak nie mam zamiaru opisywać poszczególnych konstrukcji językowych ani też kolejnych bibliotek, nie będę również mówił o efektywnych algorytmach. Pisał będę o tym jak pisać aplikacje aby można było je długo i efektywnie rozwijać. Przejdę po zasadach SOLID (ale nie tylko tych 5 podstawowych), przejdę po TDD oraz kilku innych aspektach, któr...
Technology radar jest to zbiór przemyśleń nad technologiami i trendami przyszłości (tej całkiem bliskiej) powstały w ThoughtWorks. Firmuje go swoim nazwiskiem (pośród wielu innych nieznanych mi ) Martin Fowler.
O wzorcu projektowym singleton napisałem już kiedyś sporawy post. Klasy statyczne są prostym mechanizmem i mogą przypominać singleton. Tak jak w singleton, w klasach statycznych mamy do dyspozycji wyłącznie jedną instancję obiektu. Również nie ma możliwości ręcznego stworzenia instancji obiektów. Czym się zatem te twory różnią? 1. Singleton może implementować interfejs lub dziedziczyć po bazowej klasie. Jest to poważna zaleta w stosunku do klasy statycznej. Dzięki temu można np.:class XnaRenderer: IRend...
W SQL Server aż do najnowszej wersji brakowało mechanizmu pozwalającego na stronicowanie wyników zapytań. W najnowszej wersji języka T-SQL pojawiły się polecenia OFFSET i FETCH, które umożliwiają wygodne stronicowanie danych zwracanych przez zapytanie.
Bazy danych i XML 3932 dni, 15 godzin, 48 minut temu 148 źrodło rozwiń
Bardzo ciekawa opcja, która umożliwia w łatwy sposób wykonywanie zadań wystawionych przez przepływ pracy (workflow). Dzięki tej opcji jesteśmy w stanie wykonać zadanie poprzez zwykłego e-maila, który wysyłany jest w chwili utworzenia zadania.