W sali szkoleniowej siedzi kilka osób. Otwierają się drzwi. Wchodzi koleś. "Dzień dobry. Nazywam się tak i tak. Jestem MCT, jestem MCP, jestem MCPD, jestem AA, PKP i NBP. Będę was nauczał. Takie bowiem otrzymałem przykazanie. Tutaj macie książki, przed wami stoją laptopy z materiałami, na ścianie wyświetlają się slajdy. Ja mówię, wy słuchacie. Wszystko jasne? Dobrze. Miejmy to już wreszcie za sobą...". Po chwili niezręcznej ciszy zaczyna się SZKOLENIE. A raczej "szkolenie" (zamiast apostrofów wstawiłbym...
Strona głównaUżytkownik
gordon_shumway | użytkownik
Zwykle zapisując do logów jakąś informację dobrze jest zachować pewne powiązanie pomiędzy następującymi po sobie czynnościami. Dobrym przykładem takiej sytuacji jest np. wywoływanie ApplicationEvent, wysyłanie maila, czy właściwie jakikolwiek proces składający się z więcej niż 1 kroku. Po co? A no po to, aby potem w pliku z logami móc wyfiltrować tylko te informacje które nas faktycznie interesują. Szczególnie w środowisku wielowątkowym (czyli właściwie... zawsze?) bez tego ciężko jest dojść OCB
Architektura 5012 dni, 8 godzin, 49 minut temu 112 źrodło rozwiń
Mniej więcej dwa miesiące temu postanowiłem, że chcę mieć trackballa. Mniej więcej miesiąc temu otwierałem paczkę z Logitech Cordless Optical TrackMan. Co było dalej - o tym poniżej. Najpierw jednak o motywach tej decyzji. Przez całe moje personalne otoczenie (i część "twittosfery":) ) została ona odebrana z niemałym zdziwieniem. Padały pytania w szerokim zakresie, od "to robią jeszcze trackballe?" do "po co?".
Czytając książkę Projektowanie serwisów WWW. Standardy sieciowe. Wydanie III (polecam!) natrafiłem na rozdział poświęcony CSS’owi w wersji trzeciej. Wśród opisywanych nowości najbardziej przypadła mi do gustu notacja rgba. Od standardowego zapisu rgb znanego z CSS2 odróżnia go ostatnia składowa – a (od angielskiego alpha – przezroczystość). To dzięki niej mamy możliwość manipulowania przezroczystością danej barwy. Ustawiając wartość alpha na 0 spowodujemy całkowitą przezroczystość koloru. Wartość 1 oznac...
W poprzednim wpisie pokazaliśmy sobie jak możemy zmusić Visual Studio do zdalnego debuggowania naszej aplikacji na produkcji. W tym wpisie przyjrzymy się MDbg. MDbg - to prosty, konsolowy debugger przeznaczony do śledzenia kodu aplikacji zarządzanych (tylko i wyłącznie – nie ma wsparcia dla aplikacji natywnych). MDbg jest częścią instalacji Visual Studio lub Windows SDK. Działa także bez instalacji, tak więc możemy go nagrać na przenośną pamięć i nosić ze sobą w razie potrzeby. Poniżej Mdbg w działaniu –...
Programiści dzielą się na: Tych, którzy piszą bardzo dużo komentarzy, czasami prawie w każdej linijce. Tych spotkałem niewielu.Tych, którzy w ogóle ich nie piszą, nawet jeśli napisali kod, którego nie da się zrozumieć bez choćby odrobiny komentarza. Tych ortodoksów jest już więcej.Największa grupę stanowią natomiast programiści, którzy sytuują się gdzieś pomiędzy tymi dwiema skrajnościami. Kiedy zaczynałem programować pisałem bardzo dużo komentarzy. Wiele z nich było zupełnie niepotrze...
"Nie mam pojęcia, co jest nie tak z moimi deweloperami", myśli CEO. "Wszystko szło tak dobrze, gdy zaczęliśmy projekt. Przez kilka pierwszych tygodni zespół szalał i stworzył świetny prototyp. Od tego czasu jednak wszystko zwolniło do żółwiego tempa. Oni po prostu nie pracują już tak ciężko." Wybiera driver Callaway Titanium i wysyła wózek golfowy po lodowatą lemoniadę. "Może jeśli zwolnię kilku leniwców, to zapali im się grunt pod nogami!"....
Czy można zrobić coś źle dodając nowy plik do projektu aplikacji WWW w Visual Studio? Dla ustalenia uwagi niech będzie do plik z definicją raportu wczytywanego w czasie działania tejże aplikacji. Plik ten chcemy w razie potrzeby zmodyfikować bez konieczności ponownej kompilacji projektu. Sprawa wydaje się prosta (Add -> Existing item... itd.) ale jest pewien haczyk. Otóż, Visual Studio dla plików z nieznanymi rozszerzeniami ustawia ich właściwość Build Action na wartość None. Jeśli urucho...
Gdyby było to fizycznie możliwe, chętnie przeprowadziłbym następujący eksperyment. Z odległej przeszłości – na przykład z połowy lat 90. poprzedniego stulecia – sprowadziłbym w obecne czasy dowolnego ponadprzeciętnie uzdolnionego programistę. Jak szybko odnalazłby się we współczesnym koderskim środowisku pracy?… W celu redukcji złożoności problemu poczyńmy daleko idące uproszczenia i pomińmy wszelk...
Istnieją dwie opcje, pierwsza klient prosi o soft i nie interesuje go konkretna technologia/zbiór bibliotek jaki zostanie wykorzystany do wytworzenia oprogramowania. Tutaj mamy dowolność. Wybieramy to co chcemy i jak chcemy i nie musimy się od razy na tym znać – możemy traktować projekt jako środowisko doświadczalne dla pewnych narzędzi i bibliotek, które zawsze chcieliśmy wykorzystać. W tym przypadku nie musimy wiedzieć dokładnie czy istnieje produkt XYZ, który spełni nasze oczekiwania, dowiemy się w tr...
Czasami istnieje potrzeba sprawdzenia czy baza danych jest dostępna na serwerze Ms SQL Server. W tym celu można wykorzystać widok sys.databases, na którym można wykonać select'a i sprawdzić czy dana baza danych występuje na liście (np. „select * from sys.databases”). Zobaczmy jednak, jak to zrobić przy pomocy SMO.O SMO, czyli SqlServer Management Objects pisałem już wcześniej we wpisie dot. zagadnienia jak DataSet’a przenieść do MsSQL'a (z wykorzystaniem SQLServer Management Objects i SqlBulkCopy), więc ...
Bazy danych i XML 5041 dni, 21 godzin, 14 minut temu 50 źrodło rozwiń
Co to jest?!?!?!. Kiedyś otrzymałem mail o takim właśnie tytule, a zawierający fragment mojego kodu. Kod ten, przyznam szczerze, zbyt elegancki nie był, ale napisałem go w sytuacji rodzaju "Masz to napisać na wczoraj". Ważne, że działał i robił to co miał robić. Nie jestem człowiekiem, który uważa swój kod za święty i sądzę, że umiem przyjąć krytykę, ale ten mail nie spodobał mi się z kilku powodów.
Celem mojego pierwszego wpisu dotyczącego NHibernate było krótkie wprowadzenie w świat tego ORM’a. Dziś przyszedł czas na trochę praktyki. Zaczniemy od prostej konfiguracji aplikacji (konsolowej), aby ta mogła połączyć się z bazą danych oraz automatycznie utworzyć w niej przykładową tabelę. Wykorzystamy do tego celu bibliotekę Fluent NHibernate, dzięki której, w przeciwieństwie do standardowej konfiguracji wykorzystującej pliki XML znanej z oryginalnego Hibernate’a, skonfigurujemy wszystko z poziomu kodu...
Bazy danych i XML 5041 dni, 21 godzin, 14 minut temu 176 źrodło rozwiń
Nie jestem jedyny, który ma problemy z wydajnością VS 2010, w szczególności kiedy karta graficzna w kompie na którym odpalany jest VS 2010 do mocnych nie należy. Na szczęście istnieje jedna mała ukryta opcja w ustawieniach VS 2010, która powinna pomóc wam z problemami wydajnościowymi – mi na Windows XP 32bit pomogła.
Jakiś czas temu był na tym blogu wpis dotyczący GridView i TemplateField, czyli sposobu wygodniejszą wizualizację i edycję danych tabelarycznych. W ten sposób łatwo można zamienić skomplikowane numeryczne identyfikatory (pochodzące z kluczy obcych) na dropdown-listy przedstawiające dane z innych tabel. Jednak co się stanie, gdy nasza kolumna z identyfikatorami dopuszcza wartości puste (NULL)? Otóż pojawi się wtedy „błąd serwera w aplikacji ....”. Zobaczmy jak sobie można z tym poradzić.Załóżmy, że pierwo...
W ramach przygotowania do dalszej pracy podjąłem zamiar zwiększenia jakości tworzonego kodu. Narzędzi zwiększających produktywność programisty jest oczywiście wiele. Osobom znającym już jednak podstawy, na początek, polecam zapoznanie się z programem FxCop. Jest to darmowe narzędzie od Microsoftu służące do przeprowadzania statycznej analizy kodu (oczywiście osoby dysponujące wersjami Visual Studio innymi niż Express nie...
Kilka dni temu opublikowany został najnowszy numer (02/2011) magazynu SDJournal. Spośród wszystkich artykułów chciałbym szczególnie polecić jeden, którego tematyka jest mi ostatni czasy bardzo bliska. Mam tu na myśli artykuł NHibernate vs Entity Framework. Frameworki ORM dla platformy .NET autorstwa Agnieszki Polak oraz Przemysława Krysztowiaka...
Jakiś czas temu pisałem na temat jak DataSet’a przenieść do MsSQL'a (z wykorzystaniem SQLServer Management Objects i SqlBulkCopy). W takim przypadku, gdy kolumna w tabeli w DataSet'cie ma ustawioną właściwość AutoIncrement, to należy w kolumnie w SQL serwerze ustawić Identity na true, oraz IdentityIncrement i IdentitySeed na odpowiednie im wartości (AutoIncrementStep i AutoIncrementSeed) pochodzącej ze źródłowej kolumny z tabeli z DataSet'a. Niestety w takim przypadku, podczas późniejszego ładowania dany...
Bazy danych i XML 5049 dni, 6 godzin, 7 minut temu 76 źrodło rozwiń
To ja powinienem być tym ekspertem od pisania, nie? Jak to możliwe w takim razie, że moje poprzednie artykuły miały takwielebłędów? To proste: mój blog nie ma redaktora. To typowe dla bloga, ale niestety także bardzo powszechne dla dokumentacji open source: znaczna większość dokumentacji technicznej nie zachodzi dalej niż poza szkic. Wszyscy dobrzy pisarze mają swój wstydliwy sekret: nie są naprawdę tak dobrzy w pisaniu. Ich ...
Już w założeniach jedną z podstawowych funkcjonalności vebshop‘u miało być informowanie klienta o aktualnym statusie jego zamówienia. Można to zrealizować na wiele sposobów, lecz najprostszą i jedną z najlepszych metod (moim zdaniem) jest wysyłanie wiadomości na podany podczas składania zamówienia adres e-mail. W jaki sposób zaimplementować taki mechanizm w ASP.NET? Na szczęście bardzo łatwo