W jednym z ostatnich projektów klient zażyczył sobie sprawdzenie polubienia strony z poziomu aplikacji bez autoryzacji użytkownika. Poniżej rozwiązanie tego problemu z użyciem biblioteki Facebook C# SDK.
W C# istnieje wiele typów tablic. W poście chciałbym skupić się na ich wydajności. Rozważę następujące przypadki: - tablica wielowymiarowa, - tablica tablic tzw. jagged. - tablica unsafe. Tablice wielowymiarowe w c# są najwolniejsze ponieważ CLR nie wykonuje wszystkich optymalizacji. Zacznijmy jednak od testu:internalclass Program { privatestaticvoid DoSomething(int arg) { } privatestaticvoid MultiDimensionalArrayTest(int xCount, int yCount) { int[,] array =newint[xCount, ...
Sztuka programowania 4293 dni, 1 godzinę, 17 minut temu 153 źrodło rozwiń
Jedną z podstawowych kwestii przy budowie interfejsu użytkownika jest walidacja wprowadzanych danych. WPF w tym obszarze oferuje kilka mechanizmów. Dzisiaj zajmę się omówieniem trzech rozwiązań: walidacja poprzez implementację interfejsu IDataErrorInfo (DataErrorValidationRule), walidacja za pomocą wyjątków (ExceptionValidationRule) oraz walidacja przy wykorzystaniu własnych obiektów reguł (ValidationRule).
Istnieje zalecenie, aby tworząc terminologię opierać ją na już istniejącej czy to w danym języku i jego bibliotekach, czy też w samym projekcie. Nazywając klasy, które implementują jakiś wzorzec należy w ich nazwach używać nazwy tegoż wzorca, bo to pozwoli czytającemu gładko zinterpretować przeznaczenie klasy. Trudno się z tym zaleceniem nie zgodzić, jest ono oczywiste wręcz na poziomie podświadomości. Jak to jednak z zaleceniami bywa, w teorii wyglądają one przepięknie, kiedy jednak człowiek przechodzi...
Sztuka programowania 4293 dni, 15 godzin, 28 minut temu 44 źrodło rozwiń
Domain Driven Design (DDD) zostało zdefiniowane przez Erica Evansa w jego książce Domain-Driven Design: Tackling Complexity in the Heart of Software wydanej w 2003 roku. DDD nie jest metodyką tworzenia kodu, a definiowaniem komunikacji (połączeń) pomiędzy obiektami.
Sztuka programowania 4295 dni, 1 godzinę, 21 minut temu 315 źrodło rozwiń
Manipulując stanem encji, należy pamiętać o dwóch zasadach. Dotyczą one zapisu zmian do bazy danych po zakończeniu pracy z obiektami i ustawianiu im stanów.
Encja pobrana z bazy za pomocą EntityFramework może mieć jeden z następujących stanów: Added - encja jest śledzona przez kontekst, ale nie istnieje w bazie danych Unchanged - encja jest śledzona przez kontekst oraz istnieje w bazie danych. Wartości pól są takie same w bazie jak i obiekcie (nie dokonano żadnych zmian).Modified - encja jest śledzona przez kontekst, istnieje w bazie danych. Dokonano zmian w jej polach Deleted - encja jest śledzona przez kontekst i istnieje w bazie danych. Została jednak ozn...
Czasami metody mają zbyt dużo parametrów przez co wywołanie ich jest niewygodne i może zajmować nawet dwie linie. Oczywiście pierwsza rzecz, którą powinniśmy zrobić jest sprawdzenie czy metoda czasami nie wykonuje zbyt wielu operacji tzn. przestrzega zasadę Single Responsibility. Jeśli mamy pewność, że metoda przestrzega wszelkie zasady i jest dobrze zaprojektowana wtedy trzeba pomyśleć jak zmniejszyć liczbę parametrów. W poście przedstawię kilka prób uzyskania takiego efektu. Logiczne wydaje się, utwo...
Sztuka programowania 4295 dni, 1 godzinę, 21 minut temu 139 źrodło rozwiń
Dziś prosta zasada przekazywania parametrów ale jednak często łamana. Kod:privatestaticvoid Display(string[] strings) { foreach (string text in strings) { Console.WriteLine(text); } } Powyższa metoda ma za zadanie wyświetlenie wyłącznie elementów. Parametr wejściowy (tablica string’ów) jest zbyt specyficzny i nie pozwala na przekazanie wszystkich zbiorów danych. Na przykład poniższy kod nie skompiluje się:List
Sztuka programowania 4297 dni, 22 godziny, 10 minut temu 193 źrodło rozwiń
Opublikowano Ostatnio pisałem o Web Essentials 2012 dzięki, któremu możemy szybko i łatwo generować klasy na podstawie json-a a dzisiaj zobaczymy co jeszcze daje dodatek Web Essentials 2012. W plikach CSS mamy dodatkowe menu Web Essentials: Minify selection – minimalizuje naszego css-a (w MVC4 można to również zrobić za pomocą bundle-s ale nie każdy używa przecież MVC)Remove Duplicate Properties – usuwa powielone właściwości. Bardzo przydatne jeśli nad css-em pracuje więcej niż jedna osoba lub css...
Niniejszy post opisuje sposób stworzenia nawigacji na stronie ASP.NET bez efektu przeładowania całej strony
Implementing RAII (Resource Acquisition Is Initialization) in C# using Castle.DynamicProxy and how to proxy iterator (IEnumerable).
Architektura 4301 dni, 4 godziny, 56 minut temu 71 źrodło rozwiń
Używam bardzo popularnego narzędzia Azure Storage Explorer, który pozwala w prosty sposób sterować rzeczami jakie mamy w Azure Storage. Od pewnego czasu całą zawartość statyczną stron PlaceChallenge wynoszę z hostowania pod serwerem aplikacyjnym (IIS/Apache) do magazynu danych Storage, który oferuje chmura Azure. Jest to bardzo wygodna opcja, ponieważ prócz znacznego poprawienie wydajności samej aplikacji (serwera aplikacyjnego) zdejmując z niego obowiązek hostowania plików i utrzymywania połączeń z pr...
Przyjrzyjmy się następującemu fragmentowi kodu:publicclass SampleClass { privateint _value =10; } W rzeczywistości zostanie wygenerowany konstruktor, ustawiający pole value na 10. Kod IL:.method public hidebysig specialname rtspecialname instance void .ctor() cil managed { .maxstack 8 L0000: ldarg.0 L0001: ldc.i4.s 10 L0003: stfld int32 SampleClass::value L0008: ldarg.0 L0009: call instance void [mscorlib]System.Object::.ctor() L000e: nop L_000f: ret } Na...
Sztuka programowania 4301 dni, 4 godziny, 56 minut temu 63 źrodło rozwiń
Załóżmy, że posiadamy tabelę, która może być w relacji jeden do jednego do innej tabeli lub tej relacji nie posiadać. [...] Dobrze byłoby narzucić odpowiednie ograniczenia na tego typu tabelę, czyli zabezpieczyć przed możliwością przyporządkowania do dwóch wierszy tego samego wiersza z tabeli przyporządkowywanej...
Bazy danych i XML 4301 dni, 4 godziny, 56 minut temu 83 źrodło rozwiń
Tworząc na platformę Windows Embedded Compact (Windows CE) oraz Windows Embedded Handheld (Windows Mobile) programista .NET nie ma zbyt dużego wyboru. Komplet Visual Studio 2008 i .NET 2/3.5 CF jest standardem. Co prawda VS2008 to całkiem solidny kombajn z którym można żyć w zgodzi (zresztą robię to codziennie :)). Nie zmienia to jednak faktu, że nowsze wersje są po prostu lepsze.
Jestem zwolennikiem terminologii angielskiej, czyli wszystkie identyfikatory w kodzie są w tym właśnie języku. Dzięki temu kod rzeczywiście jest samodokumentujący się, bo nie dławi go dysonans angielskiej składni i polskiej terminologii, który nieodwołalnie prowadzi do identyfikatorów typu „ponglish„, np. BeforeZapisz, RestoreZasoby...
Sztuka programowania 4301 dni, 19 godzin, 6 minut temu 131 źrodło rozwiń
Opublikowano Rozmowa z pewnym developerem: ja: a tu jest ta książka ja: http://www.charlespetzold.com/phone/index.html ja: czytałeś ją ? on: mam pdfa ja: a czytałeś ją ?? on: a powiedz mi kiedy Ręce opadają.Posiadanie książki/pdf-a/ebooka nie jest równoznaczne z przyswojeniem w niej zawartej wiedzy. Niestety dyfuzja tutaj nie działaW naszym zawodzie trzeba znaleźć czas na czytanie książek. Kup kindla i czytaj choćby w toalecieNie czytam książek w pracy, czytam je po pracy (choćby patrz pu...
JSON-a pełno wszędzie ale jeśli jeszcze się jakimś trafem z nim nie spotkałeś to warto poczytać co to jest json. Jeśli natomiast głowisz się jak z jsona wygenerować klasy to masz mamy kilka możliwości: klepiemy mozolnie kod lub szukamy jakiegoś generatorka który to zrobi lub….. wklejamy przykładowego jsona do Visual Studio 2012. i tak oto z przykładowego JSON-a z wikipedii (link na początku) otrzymujemy: szybko i wygodnie, szybciej się nie da. Jeśli nie widzisz w menu Paste JS...
Pierwszy project MonoGame dla Windows 8 gotowy. Ale poprzednio wspomniałem, że obecna wersja MonoGame nie obsługuje XNA Content Pipeline. W tym poście podam rozwiązanie (mam nadzieję, że tylko tymczasowe) tego problemu, bo Content i assety są nam baaaardzo potrzebne. Ten post jest częścią serii poświęconej tworzeniu i portowaniu gier dla Windows Store w technologii XNA (MonoGame).