W trakcie mojej niedawnej prezentacji poświęconej technologii in-memory OLTP w systemie SQL Server 2014 padło pytanie (w pełni zasadne), czy w związku z wprowadzeniem na potrzeby definiowania tabel in-memory możliwości definiowania indeksów inline w składni polecenia CREATE TABLE podobne definiowanie indeksów będzie możliwe dla tradycyjnych tabel. Okazuje się, że tak. W dokumentacji SQL Server 2014 w części poświęconej nowościom w silniku bazodanowym została wymieniona specyfikacja indeks...
Bazy danych i XML 3889 dni, 18 godzin, 12 minut temu 139 źrodło rozwiń
Kiedyś pisałem o modyfikatorze sealed i dlaczego warto go używać jeśli chodzi o kwestie dobrych praktyk. Podobne mam zdanie co do modyfikatora virtual – używam wyłącznie jak mam takie wymagania. Zawsze zaczynam od najbardziej restrykcyjnych modyfikatorów. Klasy deklaruję jako sealed internal, a metody jako private. Nie zaznaczam metod jako virtual “na zapas”, ponieważ skoro nie są one zaprojektowane pod tym kątem to może przynieść to więcej kłopotów niż korzyści. Analogiczne zasady stosuje się np. w bezp...
Sztuka programowania 3889 dni, 18 godzin, 12 minut temu 262 źrodło rozwiń
O IntelliTrace pisałem już wielokrotnie. Do tej pory nie wyjaśniłem jednak, że chociaż IntelliTrace nazywamy debugger'em historycznym to w rzeczywistości IntelliTrace jest profilerem. Dokładniej mówiąc jednym z komponentów składowych IntellITrace jest niezarządzana implementacja interfejsu ICorProfiler. Profiler ten komunikuje się z zarządzaną częścią IntelliTrace, czyli z programem IntellITrace.exe. IntellITrace.exe jest natomiast używane przez Visual Studio...
Ostatnio intensywnie pracuję w .NET Micro Framework. Na tyle intensywnie, że pokusiłem się o stworzenie emulatora do urządzenia, dla którego piszę oprogramowanie. Przykładowy emulator znalazłem w katalogu przykładów dołączonych do .NET Micro Framework, zaś wiedzę uzupełniłem lekturą rozdziału poświęconego emulacji z tej książki. Emulator ma postać aplikacji, której klasa Program dziedziczy po klasie Emulator z Microsoft.SPOT.Emulator. Dodatkowo należy stworzyć odpowiedni plik konfiguracyjny opisujący em...
If you work on small and relatively simple projects (in terms of number of components) you may not encounter this limitation. But in any non trivial ‘line of business’ application it is very likely that sooner or later you will come across this troublesome problem: Visual Studio refuses to open a project when the length of its (or any of its references) file system path is longer than 260 characters.
W dzisiejszym wpisie, pokażę jaki wpływ mają klasy na zużycie pamięci. W ostatnim poście pokazałem korzyści płynące ze struktur jeśli mamy do czynienia z małymi kontenerami na dane. Najlepiej odpalmy po prostu następujący kod.
Sztuka programowania 3893 dni, 17 godzin, 52 minuty temu 237 źrodło rozwiń
Zgodnie z obietnicą wypada przedstawić drugi z rezultatów inspiracji wynikłej ze swoistego dialogu (diaBlogu ;) ) pomiędzy Krzysztofem Morcinkiem a mną. Tym razem skupię się na następującym fragmencie jego wpisu ...
Sztuka programowania 3896 dni, 3 godziny, 43 minuty temu 166 źrodło rozwiń
Wiele programistów c# zapomina, że struktury również istnieją w .NET. Mam wrażenie, że jest to konstrukcja bardziej popularna w CPP niż w C#. W praktyce jednak, wybranie struktur zamiast klas, może mieć kolosalne znaczenie jeśli chodzi o wydajność i płynność aplikacji. Nie jednokrotnie porównywałem te dwa typy obiektów na blogu więc podstaw nie będę omawiał tutaj. Przyjmuje, że każdy wie, że struktury znajdują się na stosie a obiekty klas na stercie. W poście chciałbym skupić się na następującym scenar...
Sztuka programowania 3897 dni, 23 godziny, 31 minut temu 385 źrodło rozwiń
Swojego czasu zachwalałem wytrawność kodu i zapraszałem do jego degustacji. Pocieszające jest, że nikt z tego powodu nie był zdegustowany, a wręcz przeciwnie – niektórych zainspirowałem. Nie ukrywam, że lubię być inspiracją, a już uwielbiam, kiedy wynikiem tejże inspiracji jest z kolei zainspirowanie mnie. Nic tak bowiem nie pomaga poszerzaniu wiedzy, jak wymiana poglądów. W przypadku, który mam zamiar omówić, moja inspiracja jest podwójna. Na razie jednak skupię się na jednym jej aspekcie. Krzysztof Mor...
Sztuka programowania 3897 dni, 23 godziny, 31 minut temu 239 źrodło rozwiń
Dzisiaj kilka przykładów pokazujących jak operować licznikami z poziomu c#. Czytanie jakichkolwiek liczników jest bardzo proste ponieważ .NET Framework dostarcza odpowiednie klasy.
Sztuka programowania 3901 dni, 17 godzin, 6 minut temu 196 źrodło rozwiń
Dawanie lub otrzymywanie konstruktywnego feedbacku to bardzo trudna sprawa (challenge). Najczęśniej trzeba powiedzieć, co nie działa u danej osobo i powiedzieć to twarzą w twarz. Nie każdy dobrze znosi krytykę. W naszym zawodzie, gdzie miękkich umiejętności raczej deficyt, jest to jeszcze trudniejsze.
W bibliotece RadControls for Windows Phone znajduje się mechanizm do zrzucania kontrolki do kafelka Live Tile (przy użyciu LiveTileHelper). Niestety, ta operacja jest bardzo zawodna - często kafelek nie renderuje się prawidłowo (zwłaszcza gdy jest nieco bardziej skomplikowany), a i czas wykonywania pozostawia wiele do życzenia. Nie mam pojęcia jak to ich programiści zaimplementowali, ale postanowiłem wziąc sprawy w swoje ręce, by znaleźć lepsze rozwiązanie!
Mobile development 3901 dni, 17 godzin, 6 minut temu 100 źrodło rozwiń
… podczas rekrutacji, a zwłaszcza w codziennym kodowaniu. Jakie zna pan wzorce projektowe i proszę opisać jeden z nich? Mi też zdarzało się tutaj odpowiadać, że Singleton. Bo prosty, bo rozumiem jak działa i jakie problemy rozwiązuje.
Sztuka programowania 3905 dni, 4 godziny, 31 minut temu 440 źrodło rozwiń
Zauważyliście jak firmy z reguły przeprowadzają proces rekrutacji? Większość wynajmuje agencje pośrednictwa pracy, gdzie pracuje 25 letnia pani po psychologii/socjologii. Osoba ta z reguły przeszukuje portale typu LinkedIn czy Goldenline w poszukiwaniu słów kluczowych. Wpisałeś C++ 10 lat temu? Co z tego, że od 9 programujesz w C#/Java/Python. Na pewno jesteś idealnym kandydatem na super starszego programistę C++. Najgorsze jest to, że osoby zadające pytania w ogóle nie rozumieją, o co pytają.
Jeżeli używacie oprogramowania Time Doctor do monitorowania czasu spędzonego na programowaniu warto zajrzeć na ustawienia skrótów klawiszowych...
Unikaj przekazywania nulli. Jeśli nie będziesz ich przekazywał nie będziesz musiał sprawdzać czy ich nie masz. Prosto powiedzieć – trudniej zrobić. Proste rzeczy to przekazywanie pustych kolekcji, Null Object Pattern. Jednak to drugie może dobrze działać dla serwisów, ale już gorzej dla Value Objects. Często pojawiającym się kodem jest wyciąganie obiektów z repozytorium. va...
Sztuka programowania 3907 dni, 2 godziny, 14 minut temu 274 źrodło rozwiń
Książkę przeczytałem jeszcze na studiach (nawet dokładnie nie pamiętałem tytułu) z nudów. Bardzo lekka książka, czyta się jednym tchem. Traktuje o tym jak wygląda projekt, który się nie uda. Jak zachowują się poszczególni członkowie teamu, zarząd, kierownicy, itp. Jedni się domyślają wcześniej, jedni później. Opisane są próby, jakie podej...
Był taki smutny czas, że struktura dziedziczenia w moich testach zdecydowanie przerastała stopniem skomplikowania dziedziczenie w testowanym kodzie. A bo jedna klasa bazowa dla testów umożliwiała na przykład kontakt z prawdziwą bazą. Inna – testy z bazą in-memory. Jeszcze inna – puszczanie requestów do systemu. I tak dalej. Efekt był taki, że de facto wszystkie testy dziedziczyły ze wszystkiego. Fuj na maxa, z pryszczem jeszcze ohydnym....
Sztuka programowania 3907 dni, 2 godziny, 14 minut temu 164 źrodło rozwiń
Poprzednia część artykułu mówiła o infrastrukturze Event Tracing for Windows (ETW), ta zaś dotyczy monitorowania źródła zdarzeń. Można tego dokonać, umieszczając kod w tym samym procesie co źródło logów albo w procesie zupełnie odseparowanym od niego, co gwarantuje większą stabilność w przypadku krytycznych błędów.Hosting w tym samym procesie Najprostszą metodą jest zapisanie/odebranie wsz...