Po ostatniej prezentacji dotyczącej Behaviour-Driven Development (BDD) postanowiliśmy przedstawić tą tematykę w bardziej przystępnej dla internautów formie. Stąd też poniższy wpis, gdzie zostaną przedstawione podstawowe założenia BDD, a już wkrótce pojawi się kolejny – opisujący zastosowanie tej metodyki w aplikacji ASP.NET MVC.
Strona głównaUżytkownik
https://me.yahoo.com/a/ZLvLmp481Itt.jUO89hBQBHyLyj5nEDkuCaE#8f6cd | użytkownik
Doprowadziłem ostatnio do porządku wersjonowanie plików CSS i JavaScript dołączonych do naszego portalu. Wcześniej wersjonowanie oparte było o datę dołączoną w query string po adresie dołączanego pliku, w tej chwili koncepcja została zmieniona na hash code w postaci sumy MD5.
Przy okazji przygotowywania bazy słów kluczowych pod nasz portal napisałem proste narzędzie, które potrafi zautomatyzować część tego żmudnego procesu. Narzędzie tworzy listę podpowiedzi z wyszukiwarki Google na dane słowo kluczowe, doklejając po kolei litery alfabetu i odpytując Google Suggestion API.
Światy: obiektowy i relacyjny nie pasują do siebie. Dlatego tak popularne są mappery obiektowo-relacyjne, dzięki którym życie staje się łatwiejsze. Ale jaki mapper wybrać?
Bazy danych i XML 4979 dni, 6 godzin, 30 minut temu 202 źrodło rozwiń
Niedawno w realizowanym po pracy projekcie przyszło mi zaimplementować funkcjonalność sklepowego koszyka który dostępny był by na każdej stronie tworzonego serwisu. Cała trudność w tym, że jednym z wymagań była możliwość zmieniania liczby zamówionych towarów w dowolnym momencie, bez wpływu na aktualnie przeglądaną zawartość...
Budując architekturę wielowarstwową, wyraźnie oddzielając logikę biznesową od warstwy prezentacji podstawowym problemem jest wielokrotne powtarzanie kodu związanego z operacjami create, read, update i delete czyli dodawania, pobierania, aktualizacji i usuwania obiektów z bazy danych. Jak wykonać generyczny CRUD w Business Logic Toolkit?
Architektura 5064 dni, 23 godziny, 30 minut temu 127 źrodło rozwiń
Mvc możemy używać na różne, także mniej zgodne z podstawowymi założeniami jego twórców sposoby. Prześledźmy prosty scenariusz polegający na tworzeniu treści wiadomości e-mail na podstawie szablonu html wypełnianego danymi wygenerowanymi przez kontroler.
Standardowo .net framework posiada zestaw klas do obsługi protokołu SMTP. Fajnie, nawet bardzo, ale nie tylko wysyłaniem maili żyje człowiek… Komunikacja w jedną stronę to trochę za mało, przydało by się czasem maila ze skrzynki także pobrać…
Jedną z ważnych funkcjonalności w zakończonej w czwartek iteracji okazała się możliwość eksportu pewnych danych do pliku PDF zwracanego klientowi. Do tego celu wykorzystaliśmy bibliotekę iTextSharp i przygotowane szablony html dokumentów PDF-owych. iTextSharp to dotnetowa wersja biblioteki iText wykorzystywanej przez programistów Javy. Co ciekawe do wersji 4.x biblioteka ta była dostępna na licencji MPL lub LGPL, natomiast od wersji oznaczonych piątką licencja zmieniła się na Affero General Public Licens...
Za czasów .NETa 2.0, dość uciążliwym mógł być brak prostej możliwości rozszerzania już istniejących klas. Zespół MS postanowił ten sposób rozwiązać, tworząc właśnie “Extension methods”. I tak, .NET 3.5 oferuje nam całkiem przystępny mechanizm pozwalający dodawać nowe funkcjonalności do już istniejących typów. Zasada działania Działa to wszystko zadziwiająco łatwo. Najpierw odrobina kodu, zamienimy stringa na tabli...
W poprzednich wpisach kilkukrotnie pisaliśmy o potrzebie stosowania testów jednostkowych jaką na szczęście wymusza na nas podporządkowanie się zasadom extreme programmingu. Wiele artykyłów poświęconych Test-driven development’owi pojawi się zapewne na naszym blogu w przeciągu kolejnych miesięcy. Warto więc opisać także podstawy korzystania z biblioteki do testów jednostkowych której używamy, czyli NUnit’a. Aby rozpocząć pracę z tym jakże użytecznym narzędziem pobieramy go z odpowiedniej strony, w wersji...
Podczas stosowania Agile niezbędnym jest podział kolejnych funkcjonalności klienta na zadania (tasks), które przydzielane są następnie kolejnym członkom zespołu programistycznego. Funkcjonalności dzielimy na zadania na początku każdej iteracji - dzielimy tylko te funkcjonalności które mają być w danym okresie czasu zaimplementowane...
Drugi odcinek serii (przypominam, że na początku był odcinek 0.). Minęła pierwsza iteracja, zakończona całkiem nie małym sukcesem, bo zdążyliśmy zaimplementować wszystkie zaplanowane funkcjonalności, jednocześnie skupiając się bardziej na jakości niż na szybkości prac. A więc jakie zmiany zaszły w naszym projekcie? Przede wszystkim rozrósł się znacznie, zyskał wiele funkcjonalności, a to pociągnęło za sobą konieczność pewnych zmian i udoskonaleń w architekturze. Przypomnę, że nasza solucja jest aktualnie...
Architektura 5161 dni, 4 godziny, 42 minuty temu 64 źrodło rozwiń
Dzisiaj nieco o tym, jak można sobie chociaż kapkę życie ułatwić. O ile z reguły przy dropdownlistach wyświetlamy jakieś konkretne wartości pobrane z bazy tworząc odpowiednią SelectList, o tyle z enumami z reguły nie chcemy wyświetlać bezpośrednio jego nazwy w boxie, na przykład ze względu na to, że nasza nazwa (nam tłumacząca wszystko) nic odbiorcy stronki nie powie. Rozwiązaniem przez nas stosowanym jest generowanie listy na podstawie atrybutów enumów. Więc jedziemy: Atrybut DisplayName jest tu bardzo ...
Programowanie w parach, to jeden z najbardziej kontrowersyjnych pomysłów jakie spotkać możemy podczas przeglądania publikacji dotyczących extreme programming’u. Jak można pracować wydajniej redukując liczbę zadań nad którymi pracujemy o połowę? Brzmi niedorzecznie, a jednak ma szereg nie koniecznie widocznych od razu zalet…
Z podstawowych tutoriali dotyczących MVC wywnioskować można, że zazwyczaj wraz z akcją w parze idzie widok na którym wyświetlany jest jej rezultat. Czy musi on być zawsze jeden? Nie koniecznie...
Na naszym blogu opisujemy na bieżąco proces tworzenia pewnego projektu. Proces ten jest oparty o metodologie z rodziny Agile, a jego poszczególne elementy przedstawiamy w kolejnych wpisach. Możliwe jednak, że stronę tą odwiedzą również osoby, które nigdy wcześniej nie słyszały o czymś takim, jak Agile. Ten wpis jest adresowany głównie do nich.
Architektura 5163 dni, 16 godzin, 21 minut temu 103 źrodło rozwiń
Wyobraźmy sobie następująca sytuację. Implementujemy program do obsługi przetwórni win. Nie będą to takie wina, jakie możemy spotkać na codzień. Wina będą markowe, produkowane z prawdziwych winogron. Nie jabłek, nie gruszek, a właśnie winogron. Jak wiemy winogrona możemy spotkać powszechnie w dwóch odmianach – białe, oraz ciemne.
Bazy danych i XML 5166 dni, 10 godzin, 1 minutę temu 50 źrodło rozwiń
Na początku był Agile… Manifest Agile i zawarte w nim idee. Manifest, mimo że niezwykle odkrywczy był jednak bardzo ogólny – prezentował wartości, ale nie tłumaczył, jak wprowadzić je w życie. Nieuniknione było więc powstanie metodologii ściślej opisujących proces wytwarzania oprogramowania...
Dlaczego ASP.NET MVC jest groźne dla Test-driven development’u? A jest? No jest. Co ciekawe wynika to z jego największych zalet...