SQL z NHibernate w konsoli Visual Studio

31 marca 2011 07:33 w kategorii: pro
NHibernate posiada zmienną show_sql, której ustawienie na "true" powoduje wypluwanie na konsolę wszystkich SQLi idących do bazy. Zachciało mi się pewnego dnia podpiąć po prostu debuggerem pod aplikację i zobaczyć te SQLe w Visualu, w okienku Output. Była to aplikacja web - więc konsoli brak. Trial na nhprof akurat się skończył:), więc w danej minucie również niewiele można było na to poradzić. Rozwiązaniem najprostszym okazała się podmiana docelowego miejsca zapisu wszystkich informac... [More]

Czyszczenie cache SQL Servera

28 marca 2011 07:15 w kategorii: pro
Optymalizacja procedur składowanych czy zwykłych zapytań do bazy danych nie jest zadaniem wdzięcznym, ale potrafi dać bardzo wiele satysfakcji. Kto doświadczył zoptymalizowania działania jakiegoś potworka w taki sposób, że po pół godziny pracy czas wykonania spada z 2 minut do 1 sekundy, wie doskonale o czym mówię. A jak uda się tego dokonać bez grzebania się w indeksach to już w ogóle cud/miód/itd. Wtedy z kolei ten, kto to zapytanie pisał oryginalnie, zasługuje na siarczystego liścia... ale ak... [More]

Dość regularnie zdarza mi się, że próbując wyszukać coś w projekcie dostaję wielką śmierdzącą figę zamiast wyników. Co prawda lepsze to niż wielkie śmierdzące figi, ale i tak oczekuję czegoś innego. Jest na przykład tak: Wyraźnie widać, że szukany tekst "pnlall' znajduje się chociażby dokładnie tu, w otwartym już pliku! WTF?? No ale dobra, bug bugiem, sam święty nie jestem. Najgorsze, że takie coś występuje niedeterministycznie. Po prostu nagle przestaje działać. Najlepszy jest jednak... [More]

Ostatnio pokazałem jak można wygenerować panel zawierający walidację bez używania formy. Można go potem gdzieś dokleić i... No i nie działa:). Powód jest bardzo prosty: samo doklejenie htmla do dokumentu nie sprawia jeszcze, że walidatory zostaną obsłużone. Aby to osiągnąć należy wymusić sparsowanie nowych elementów przez framework walidacji. Okazuje się, że robi się to bardzo prosto: 1: $.validator.unobtrusive.parse(element); I życie stało się prostsze. Sidenote: kiedyś pisałem... [More]

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. Wystarczy zawrzeć to co się chce w @using(Html.BeginForm()) { } i jazda. Ale co gdy nie chcemy formy? Ja na przykład pobieram ajaxem wyrenderowany ser... [More]

Hostowanie Git a modyfikacja historii

17 marca 2011 07:52 w kategorii: pro
Opublikowałem kiedyś kilka słów o modyfikowaniu historii w Gicie. Bardzo przydatna możliwość, gdy chcemy robić to lokalnie, przed pchnięciem zmian do zdalnego repozytorium. Albo gdy w pełni kontrolujemy wszystkie zmiany lądujące w centralnej lokalizacji i świadomie wykonujemy push z opcją --force w celu nadpisania już wysłanych commitów. Prawdopodobnie zdarzy się jednak, że będziemy musieli dać dostęp "write" do repozytorium osobom, które z różnych względów nie powinny mieć takiej możl... [More]

Git: wiele komend w jednym aliasie

15 marca 2011 08:43 w kategorii: pro
Dopiero niedawno dowiedziałem się, że w Gicie można agregować wiele komend pod jednym aliasem. Kluczem jest rozpoczęcie definicji aliasa od wykrzyknika, którzy powoduje wykonanie tekstu jako zwykłej komendy systemowej a nie polecenia gita: 1: [alias] 2: stl = !git status && git log -n1 Powyższy alias pokaże aktualny status oraz ostatni commit. Nie będę ściemniał i udawał alfy i omegi:) - nie mam aktualnie bardzo pożytecznego praktycznego zastosowana dla tego ficze... [More]

Git backup

14 marca 2011 08:45 w kategorii: pro
Jak już niejednokrotnie pisałem, że do pracy bardzo intensywnie wykorzystuję maszyny wirtualne. Każdy projekt ma swoją. Co za tym idzie - cały kod mam także schowany w wirtualkach, bo repozytorium hostuję na vipserv (lub na hostingu dostarczonym przez klienta). Ma to nieprzebrane wprost morze zalet. Ma też kilka wad, z których jedna dawała mi się czasami we znaki: aby dostać się do kodu, muszę odpalić wirtualkę, co nie zawsze jest możliwe. Przyjemnie byłoby móc napisać "git backup" i ... [More]

Słowo na niedzielę, o Ruby

13 marca 2011 13:30 w kategorii: pro
Nauka nowego języka programowania jest procesem fascynującym. Jak jednak wybrać docelowy język jeśli już będziemy przekonani, że mamy na to czas? Poniżej argument przemawiający za Ruby, z którym ciężko dyskutować: You know it's time to learn Ruby when non-Ruby books are using Ruby for the code examples To co - do roboty?:) Źródło: Hadi Hariri na Twitterze.

Jak korzystam z poziomów logowania

9 marca 2011 08:00 w kategorii: pro
Tagi:
Pod jednym z moich ostatnich postów na temat logowania Jacek zasugerował w komentarzu abym napisał trochę więcej o tym jak dzielę logi na poszczególne poziomy. Poniżej opis moich ZAMIERZEŃ. Zamierzeń, ponieważ jeszcze w ten sposób z logowania nie korzystałem, ale po dość długim rozmyślaniu wydaje mi się to najsensowniejszy podział. Może pojawią się uwagi korygujące takie podejście zanim wprowadzę je do projektu?:) TRACE Najbardziej szczegółowy poziom logowania. Tak szczegółowy, że nawet nie m... [More]

Czego nie robić na finałach Imagine Cup

7 marca 2011 08:15 w kategorii: pro
Tagi:
[Uwaga: pisząc "Imagine Cup" mam na myśli "Imagine Cup, kategoria Projektowanie Oprogramowania"] Polskie finały Imagine Cup 2011 zbliżają się wielkimi krokami. Postanowiłem skorzystać z okazji i podzielić się kilkoma refleksjami na ten temat. Miałem przyjemność dwukrotnie uczestniczyć w tym evencie jako startujący, i dwukrotnie jako widz. Oraz kilkukrotnie o tym pisać. Przez lata (właściwie od prawie samego początku konkursu w Polsce, czyli roku 2005) obserwowałem jak zmien... [More]

log4net vs nLog

3 marca 2011 06:58 w kategorii: pro
Kolejny raz o logowaniu... "bo to naprawdę ważne™" :). W świecie .NET mamy dwie liczące się biblioteki oferujące logowanie informacji z aplikacji: log4net oraz nLog. Oczywiście znajdą się też inne rozwiązania: od koszmarnych (The Logging Application Block z EntLiba) po głupie (pisanie własnego loggera i jego produkcyjne wykorzystanie). Z tych dwóch zdecydowanie bardziej popularny jest log4net. I ja także od niego zacząłem. Gdy po raz pierwszy zobaczyłem możliwości tej biblioteki to d... [More]

Niedawno przedstawiłem TokenContext, klasę pomocniczą upraszczającą wyławianie kontekstu z masy logów tworzonych w aplikacji wielowątkowej, gdzie wiele operacji przeplata się nawzajem. Regularnie jednak zdarza się, że interesuje nas nie tyle jedna szczególna operacje co cały cykl życia konkretnego obiektu. Kumpel, z którym pracuję nad "głównym" projektem, zaproponował stosowanie takiej, bardzo prostej, logicznej i przydatnej, konwencji: 1: _log.Debug("User#{0} did somethi... [More]