nHibernate named queries Czasem wymagania biznesowe skłaniają programistów do tworzenia bardzo skomplikowanych powiązań między obiektami / zapytań. Aby mieć je w jakimś 'przewidywalnym miejscu a nie rozrzucone po kodzie możemy użyć w mappingu. Query jest niezależne od Class. from Subject s where s.Name like :name Wywołanie mogło by być w ten deseń: IQuery query = Session.GetNamedQuery("qSubjectByName"); query.SetParameter("name","SomeName"); var list = query.List(); Ale co jeśli...
Strona głównaUżytkownik
Paweł Łukasik | użytkownik
Achronous Controller - asynchroniczne kontrolery Asynchroniczne wywołania mogą poprawić wydajność aplikacji, jednak zawsze powodują dużo większe skomplikowanie kodu. W artykule na MSDN wymienione jest kilka punktów kiedy warto używać asynchronicznych wywołań jak np. długo trwające operacje wejścia-wyjścia, inne długo trwające operacje, czy nastawienie na wielowątkowość. Klasyczny kontroler (z klasycznym przykładem) wywołania z jakiegoś serwisu: public class HomeController : Controller { public A...
Areas pozwalają na rozbicie aplikacji na obszary. Każdy z obszarów będzie miał swój zestaw kontrolerów, widoków i routing. Wszystkie obszary mogą nadal korzystać z katalogu Shared, nadal możemy mieć główny obszar (ten który był dostępny do tej pory). Dodanie obszaru jest proste: Utworzony zostanie katalog Areas a w nim nasz nowy obszar oraz nowy zestaw katalogów ze strukturą MVC. Została również utworzona klasa typu AreaRegistration. Region zostanie automatycznie zarejestrowan...
Mechanizmy wspierające tworzenie aplikacji wielowątkowych są obecne w .NET od zarania dziejów. Istnieją klasy opakowujące funkcje i obiekty systemowe, są także mechanizmy dostępne tylko w .NET i udostępnione w postaci wygodnych konstrukcji językowych. Jedną z takich konstrukcji obecnych w C# jest słowo kluczowe lock, które usprawnia synchronizację między wątkami praktycznie bez wpływu na wydajność. Lock przeszedł drobny lifting w wersji 4.0, jednak szczegóły omówimy na końcu. Metoda 1: Kod haszowy & ...
Swojego czasu opisałem implementację Field Mappera dla SharePoint wraz z wykorzystaniem jego w wzorcu repozytorium. Jednakże pominąłem jedną istotną kwestią o jaką ostatnio dostałem zapytanie: Jak wykorzystać repozytorium z filed mapper w event receiver w SharePoint? W przykładach pokazywałem iż możemy za pomocą SharePointServiceLocator uzyskać implementację danego interfejsu repozytorium i następnie już operować na danej implementacji.
Gdy podczas debuggowania aplikacji chcemy ją zatrzymać w pewnym miejscu, zwykle ustawiamy „breakpoint”, aby jednak ten sposób zadziałał, musi być podłączony do procesu, który chcemy debuggować Debugger. Co można jednak zrobić, gdy tak nie jest (nie zawsze uda nam się ręcznie podłączyć (attach))? Gdy debugger nie jest podłączony do procesu, to można takie podłączenie wymusić dzięki wykorzystaniu klas z przestrzeni nazw System.Diagnostic: Debugger.Launch i Debugger.Break (http://msdn.microsoft.com/en-u...
Uwaga! U mnie działa... Nie wiem jak będzie u Ciebie. Od jakiegoś czasu borykam się z problemem wydajności w Visual Studio 2010. Pomijając zbędny opis moich udanych i nieudanych eksperymentów związanych z poprawieniem wydajności mam dla wszystkich, którym zamulające Visual Studio 2010 dało się we znaki dwie rady. Jedną bardziej, drugą mniej oczywistą:Ta bardziej oczywista. Wyłączyć wszystkie niepotrzebne dodatki. Jako przykład podam ORM Open Access od Telerika, ...
Jedną z bolączek wielu administratorów jest konieczność przechowywania ‘wrażliwych’ danych w bezpieczny sposób. Chodzi o wszelkiej maści pliki konfiguracyjne zawierające parametry połączenia, tudzież pliki zawierające login i hasło lokalnego administratora, które stanowią dane wejściowe dla programów typu runas, tworzących nowe procesy w kontekście użytkownika uprzywilejowanego. Jakiś czas temu opisywałem program cpau, który umożliwia przechowywanie danych w postaci zaszyfrowanej i odszyfrowywanie ich do...
W ASP.MVC 3 dodano bardzo przyjemną walidację danych po stronie klienta, która nie miesza w htmlu jak Gargamel w wielkim garze pełnym wypatroszonych kwiczących smerfów. Wszystkie dane chowa w atrybutach ("data-*" zgodnych z HTML5), a skrypty wywalone są na zewnątrz. Tak jak powinno być. Zwie się bardzo poważnie: unobtrusive validation.
W poprzednim wpisie wspomniałem o API Moniotrze, dzięki któremu mogliśmy z bliska podejrzeć zestaw parametrów przekazanych do jednej z funkcji systemowych tworzących nowy proces. Tym razem zrobimy jeszcze jeden krok - pokusimy się o rozszerzenie zbioru API Monitora o funkcje systemu, których jeszcze nie zna. W tym celu wejrzymy w trzewia klasy SecureString, która wdzięcznie pomagała nam przy naszych poprzednich zabawach, tym razem jednak to ją samą weźmiemy na stół doktora Reflectora. Albo nie - użyję do...
Jednym z wyzwań przed jakimi stoją programiści w trakcie pracy nad aplikacją jest sposób przechowywania w pamięci ‘wrażliwych danych’, czyli wszelkiego rodzaju haseł, connection stringów, etc., a zatem informacji, którymi ludzie niechętnie dzielą się ze wszystkimi wokół. Generalnie chodzi bowiem o to, żeby jakiś dobry człowiek podczas przeglądania pamięci procesu nie miał na widelcu wszystkich tych danych, a jedynie sieczkę z której wyciągnięcie czegokolwiek sensownego graniczy z cudem. I właśnie specjal...
Hostingiem ASP na Webio.pl jestem bardzo mile zaskoczony. Niedrogi, a niezawodny i funkcjonalny. Problemem jest tylko automatyczne ubijanie nieaktywnej aplikacji po 20 minutach. Staje się to uciążliwe jeśli: start aplikacji długo trwa (pierwszy wizytujący będzie musiał czekać) potrzeb...
Używając analizy kodu w projektach .NET 4.0 można natknąć się na taki oto komunikat: CA1026: Microsoft Design: Replace method xyz with an overload that supplies all default arguments. W dokumentacji do tego ostrzeżenia czytamy, że choć używanie metod opcjonalnych jest dozwolone w specyfikacji CLS, to dozwolone jest także ich ignorowanie. Przyjrzyjmy się więc temu nieco bliżej. Parametry opcjonalne Na tapetę weźmiemy tę oto prostą metodę: public void OptionalMethod(string name, int value = 42) { ...
Wpadłem w pułapkę relacji wiele do wielu, m:n. Po raz kolejny. Jak fretka w sidła... te same po raz n-ty (czy m-ty?). Byłem na siebie tak wściekły, że to ludzkie pojęcie przechodzi. Właściwie bardziej mi teraz szkoda nerwów niż straconego czasu. Ale o co się, panie, rozchodzi? W moim systemie miałem bardzo prostą zależność: Company (n) - (m) Customer. Firma posiada wielu klientów, a klient przypisany jest do wielu firm. Bez dodatkowych ceregieli utworzyłem:
Architektura 5080 dni, 8 godzin temu 321 źrodło rozwiń
W komentarzach do poprzedniego wpisu Sławek dopominał się o 'ciąg dalszy', więc może jako uzupełnienie dodam garść informacji odnośnie dostępności modułów w zrzutach pamięci analizowanego procesu. Weźmy zatem aplikację testową z poprzedniego tekstu i przygotujmy zrzuty pamięci dla działającego procesu, a potem sprawdźmy co też możemy z nich wyłuskać odnośnie załadowanych modułów. 1. WinDbg W WinDbg mamy polecenie .dump z wieloma parametrami określającymi zestaw informacji do zapisania w pliku zrzutu. Dla...
Poprzedni tekst zakończyłem zagadką: czy wykonując !SaveModule będziemy mieli kod dynamicznej metody DynamicClass.SecureGetKey(Test.Program, Int32) w pliku na dysku? Nikt nie odpowiedział, więc ja to zrobię: Nie, kod generowany w ramach DynamicMethod nie znajdzie się w zrzucie modułu na dysku. Zdziwieni? Ja trochę, a to jeszcze nie jest ostatnia niespodzianka, jaką serwuje nam SaveModule.Dziś zapoznamy się z następną, ale po kolei. Uwaga! Wszystkie dalsze rozważania dotyczą aplikacji x86, więc wszystki...
Przez ostatnie dwa tygodnie dużo się już na ten temat pisało, postanowiłem, więc, że dodam i swoje dwie krople do dyskusji. Dla tych którzy nie są w temacie, wszystko rozbija się o to, że RedGate (firma która kilka lat temu przejęła development na darmowym narzędziem do analizy i dekompilacji kodu napisanego pod .NET) oświadczyło, że zacznie pobierać opłatę za oprogramowanie. Pewnie to by umknęło uwadze społeczności gdyby nie tak naprawdę trzy kluczowe punkty:
Kilka dni temu Sławek napisał tekst o ukrywaniu kodu i skorzystał z klasy DynamicMethod, dzięki której generował kod IL w trakcie wykonania programu. Był również na tyle uprzejmy, że podesłał mi przykładowy kod, dzięki któremu zaoszczędziłem trochę czasu i mogłem zająć się od razu konkretem. Mam nadzieję, ze nie będzie na mnie zły jak wrzucę całościowo część tego kodu, dostępnego również w jego notce... :) Dla przypomnienia zatem, Sławkowi zależało na ukryciu szczegółów metody GetValue, tak, aby po dezas...
Stanąłem ostatnio przed następującym problemem: ukryć algorytm (w tym wypadku zawartość metody) tak, żeby przynajmniej na pierwszy rzut oka nie dało się go przeczytać. Pogrzebałem troche w róźnych helpach i innych internetach i stwierdziłem, że idealnie do tego celu nada się klasa DynamicMethod. Jak się okazało łatwiej powierdzieć, trudniej zrobić. Jak zawsze zresztą...
Dziś po małej przerwie mała podpowiedź dla osób zajmujących się Windows Phone 7. Jak wiadomo (lub też nie ) platformy, przy pomocy których możemy pisać własne aplikacje na WP7 to Silverlight 4 Windows Phone (nie piszę samego Silverlight, bo są tu pewne różnice w stosunku do pełnej wersji) oraz XNA 4.0. Nie oznacza to jednak, że musimy zamykać się tylko w jednym ze światów. Istnieje możliwość korzystania w jednym projekcie z przestrzeni nazw, klas i funkcjonalności dostępnych w obu tych technologiach. Z...
Silverlight 5108 dni, 9 godzin, 25 minut temu 48 źrodło rozwiń