Niedawno popisałem troszkę o czasie UTC i dlaczego tylko taka reprezentacja czasu powinna znajdować drogę do bazy danych. A teraz... w jaki sposób przygotować datę do podróży w drugą stronę, czyli do użytkownika. Z Automapperem jest to zadanie doprawdy banalne, wystarczy odpowiedni Type Converter...
Strona głównaUżytkownik
Paweł Łukasik | użytkownik
Najprostszym wzorcem projektowym warstwy biznesowej, należącym do grupy wzorców proceduralnych jest skrypt transakcji (w skrócie TS – transcaction script). Spójrzmy na diagram UML przedstawiający przykład jego użycia: Innymi słowy, TS jest zapisem przypadków użycia w naszym systemie. W przypadku systemu sprzedaży oczywistymi przypadki użycia są m.in.: dodanie nowego klienta do bazy, złożenie zamówienia czy pobranie listy produktów. Jak już wspomniałem jest to wzorzec proceduralny a nie obiektowy zate...
Architektura 5392 dni, 13 godzin, 53 minuty temu 114 źrodło rozwiń
Jak wiadomo w pliku tym znajdują się informacje konfiguracyjne sterujące pracą aplikacji, np. definicja połączenia z bazą danych lub konfiguracja zewnętrznych serwerów SMTP. Uzyskanie dostępu do tego pliku przez osobę niepowołaną może mieć drastyczne skutki dla aplikacji. Oczywistym faktem staje się zabezpieczenie tych informacji poprzez zaszyfrowanie ich. Służy do tego narzędzie „aspnet_regiis.exe” uruchamiane z konsol...
Jednak pamiętać o takim małym wynalazku o nazwie Windows Presentation Foundation w skrócie powszechnie znanym jako WPF. Ale dlaczego? Podam prosty przykład :)
Zacznijmy od zdefiniowania do czego potrzebna nam jest tzw. warstwa biznesowa w systemie. Sama nazwa może nie wiele mówi i czasami okazuje się nawet myląca. Ogólnikowo jest to rdzeń systemu. Stanowi zdecydowanie najważniejszy punkt każdej aplikacji. Warstwa biznesowa ( w skrócie BL – business layer) zawiera właściwą logikę aplikacji. Jeśli brzmi to zbyt abstrakcyjnie, przedstawmy to na przykładzie systemu sprzedaży (na którym będę często bazował). Co stanowi warstwę biznesową ( a więc logikę) w syste...
Architektura 5394 dni, 19 godzin, 38 minut temu 116 źrodło rozwiń
Ostatnio coraz częściej spotykam się z pytaniem osób, które chcą się nauczyć programować, jakiego języka warto się nauczyć pod kątem przyszłego rynku pracy. Czy jeżeli nauczę się języka X to będą miał pracę? Co lepiej, Y czy Z, żeby dużo zarabiać? I tego typu różne pytania.
W dzisiejszym świecie "nietechniczni" kreatywni ludzie nie mają łatwo. Obrotny biznesmen chce wsadzić w coś trochę kasy, rozkręcić jakiś projekcik, wpada na genialny pomysł: "a, zainwestuję sobie w portal!". Pomysł - betka. Założenia - betka. Analiza - betka. Ewentualna dotacja - betka. Okazuje się, że wszystko jest banałem w porównaniu z dokonaniem wyboru technologii. I, wbrew pozorom, im więcej ekspertów, tym trudniejszy wybór. Chcesz wiedzieć jak jest naprawdę? Która z dzisiejszych technologii gwara...
Oryginalny post: Maybe Normalizing Isn't Normal Autor: Jeff Atwood Jednym z problemów z jakimi mierzymy się teraz przy Stack Overflow jest utrzymanie wysokiego poziomu wydajności relacyjnej bazy danych, podczas gdy jej rozmiar znacząco rośnie. Bardziej precyzyjnie, chodzi o skalowanie naszego systemu tagów. Dobrze zaprojektowana baza danych to baza znormalizowana, tak mówią tradycyjne zasady projektowania. Niemniej jednak, ja nie jestem tego taki pewien. Dare Obasanjo opublikował świetny post pt. Kiedy...
Bazy danych i XML 5401 dni, 23 godziny, 2 minuty temu 79 źrodło rozwiń
Dziś przyszedł czas na poruszenie tematu architektury aplikacji typu enterprise. Planuje napisać cykl postów m.in. o różnych wzorcach projektowych wykorzystywanych do budowy kolejnych warstw systemu. Zacznę od totalnych podstaw, które mają na celu wyjaśnienie z czego tak naprawdę powinna się składać solidna aplikacja. Przedstawię również kilka prostych zasad inżynierii oprogramowania mających na celu usprawnienie pisania elastycznego kodu. Zacznijmy od określenia czym jest aplikacja enterprise. Według n...
Architektura 5400 dni, 18 godzin, 13 minut temu 278 źrodło rozwiń
Zintegruj się z NDepend Dość niedawno na swoim blogu Patrick Smacchia ogłosił, że NDepend jest teraz w 100% zintegrowany z Visual Studio. Nie ma co ukrywać, że jak mamy coś pod ręką to zdecydowanie łatwiej po dane narzędzie sięgnąć i zastosować. Testowałem NDependa już kilkakrotnie i za każdym razem dawał świetne wyniki. Zapytacie do czego mi się przydał? Nie będę się tu rozpisywał o funkcjach tego narzędzia. Było kilku przede mną, którzy to już uczynili: Darek, Gutek i Paweł. Skupię się na zasto...
Programowanie współbieżne w c# 4.0 jest znacznie łatwiejsze w porównaniu z poprzednią wersją. Widać, że platforma .NET staje się coraz dogodniejszym środowiskiem programistycznym dla rozwiązań równoległych. Zacznijmy od pętli foreach. Przeważnie wykonujemy ją w sposób sekwencyjny. Jeśli chcielibyśmy zrównoleglić ją, musielibyśmy stworzyć instancję Thread i zawartość pętli umieścić w wątkach. Ponadto proces wymagałby użycia np. semafora albo ManualResetEvent aby zsynchronizować kod wykonywany po zakończe...
Debugger w Visual Studio 2010 znacząco się zmienił. Przy wcześniejszych betach na pewno usłyszeliście takie hasło jak Debugger Historyczny. Ta enigmatycznie brzmiąca nazwa od Beta 2 zmieniła się w IntelliTrace, który zapewne zostanie z nami już do wersji finalnej. Czym więc jest IntelliTrace?
Zastanawiałem się ostatnio nad tym, jaki MUSI być godny zaufania freelancer-programista, a jaki być NIE MOŻE. Efektem jest kilka spostrzeżeń, które dla wielu ocierają się zapewne o banał... ale ze względu na spore zainteresowanie ostatnim postem o tej tematyce postanowiłem się nimi podzielić. Co zatem cechuje profesjonalistę?
W ubiegłym tygodniu w implementowanym systemie zajmowałem się datą i czasem. I tak mnie tknęło... dlaczego w ogromnej większości systemów, które przyszło mi oglądać, datę zapisuje się w sposób następujący? 1: article.PublishedTime = DateTime.Now Niby co jest z tym złego? Właściwie... to zależy od kontekstu i rodzaju tworzonego systemu. Korzystając z powyższej konstrukcji trzeba zdawać sobie sprawę z tego, że tak zapisany czas jest ZALEŻNY od maszyny, na której operacja ma miejsce. Wartość ta odczytana...
Programowanie w JavaScript niesie za sobą dużą dozę swobody jeżeli chodzi o posługiwanie się funkcjami. Funkcje są wszędzie, deklarować je można na wiele sposobów, a rozsądne ich wykorzystanie jest źródłem nowych przyzwyczajeń, które chciałoby się niejednokrotnie przenieść do "rodzimego" języka programowania. W moim przypadku oczywiście C#. I dzięki wyrażeniom lambda takie szafowanie funkcjami na lewo i prawo staje się nie tylko możliwe (bo możliwe było już wcześniej od .NET 2.0 dzięki anonimowym delegat...
Architektura 5413 dni, 14 godzin, 16 minut temu 138 źrodło rozwiń
Git posiada możliwość nadawania własnych aliasów jego komendom. W konfiguracji wygląda to tak: 1: [alias] 2: ci = commit A więcej na ten temat można poczytać w WIKI. Ja jednak zamiast korzystać z aliasów, napisałem swój skrypt do miniaplikacji AutoHotkey. Przechwytuje ona zdefiniowane sekwencje klawiszy, w locie zamieniając na inne akcje. (tym, którzy go nie znają, gorąco polecam ściągnięcie i kilka chwil zabawy, świetna sprawa). Mój poniższy skrypt jest banalny: ogranicza się do rozwijania 2...
Wspominałem o "nienajświetniejszym" działaniu Git pod Windows oraz o tym, że w Mercurialu udało mi się zrobić WIĘCEJ przez 2 godziny niż w Git przez kilka miesięcy. Główną czynnością, którą miałem wówczas na myśli, było udostępnienie swojego repozytorium na zewnątrz. Linuxowa wersja Gita rozprowadzana jest z komendą git-daemon pozwalającą na zdalne dobranie się do repo po protokole git://. Taki odpowiednik svnserve. Niestety po zainstalowaniu msysgit okazuje się, że w tej wersji deamona po prostu nie ma...
W języku C# mamy kilka mechanizmów tworzenia wątków. Różnią się one zarówno wydajnością jak i przeznaczeniem. Zacznijmy więc od najpopularniejszego sposobu a mianowicie klasy System.Threading.Thread. Stworzenie wątku polega na inicjalizacji klasy oraz wywołania metody Start:publicclass ThreadExample { public CreateThread() { System.Threading.Thread thread =new System.Threading.Thread(ThreadMethod); thread.Start(null); } privatevoid ThreadMethod(object parameters) { ...
Odliczając dni do premiery pełnej wersji pakietu Visual Studio 2010, mamy okazję zapoznać się z wersją beta tego oprogramowania oraz poznać nowe możliwości technologii Silverlight. Jej czwarta odsłona przynosi długo oczekiwaną funkcjonalność: obsługę mikrofonów oraz kamerek internetowych. Tradycyjnie dołożono starań, by interfejs był jak najbardziej przystępny dla programisty. Pokażę tutaj typowy sposób na przechwytywanie dźwięku za pomocą mikrofonu. Korzystać będziemy z przestrzeni nazw System.Windows....
Silverlight 5416 dni, 22 minuty temu 35 źrodło rozwiń
VS2010 – Cecha Dnia: Extension Manager Szybki start, wybieramy menu Tools i zaznaczoną opcję: Przydatne gdy jesteśmy podłączeni do Internetu. Wtedy nie wychodząc z Visual Studio dostajemy galerię z różnorakimi dodatkami. Są one dostępne albo bezpośrednio do pobrania lub zostaniemy pokierowani na stronę producenta, gdzie znajdziemy więcej informacji. Extension Manager to bardzo ciekawe repozytorium dóbr wszelakich. Dla przykładu, szukaliście kontrolki Captcha do Asp.Net? Jest tam: Dodatki są podziel...