W poprzednim odcinku dowiedzieliśmy się co to jest Node (pobieżnie) i do czego służy NPM. Dowiedzieliśmy się, by zainstalować framework lub rozszerzyć nasz serwer o dodatkowe funkcje wystarczy polecenie npm install i kłopot z głowy. A co jeżeli byśmy chcieli zainstalować jQuery? Albo Twitter Bootstrap? Albo jakąś inną kliencką bibliotekę, którą chcemy wykorzystać w aplikacji? W Visual Studio za pomocą nuget instalujemy paczkę o odpowiedniej nazwie i ona nam już trafia do odpowiednich folderów. Ale NPM ...
Niedawno Paweł zadał na dotnetowej grupie FB pytanie: w jakiego typu firmie chciałbyś pracować jako programista? Link: https://www.facebook.com/groups/net.developers.poland/permalink/289388431242519/. Sama ankieta jak i jej wyniki są w kontekście tego posta nieważne. Pod pytaniem pojawiła się jednak dyskusja. Widzę, że bez logowania do fejsa nie można tego linka podejrzeć, więc wszelkie tożsamości pozostawię tajne łamane pr...
Przez ostatnią dekadę wiele osób pisało i dyskutowało o problemie dotyczącym alokacji w bazie systemowej tempdb. Dość dobre repozytorium wiedzy na temat tempdb zebrała jeszcze w 2009 roku Cindy Gross na swoim blogu. Także i polscy specjaliści poruszali ten temat wielokrotnie [...]. Z jednej strony wiadomo już, że odpowiedź na pytanie, czy dzielić bazę tempdb na wiele plików danych, brzmi “to zależy”. Z drugiej strony na ogół skupiano się na udowadnianiu, że zalecenie dotyczące podziału tempdb jest ...
Bazy danych i XML 3213 dni, 22 godziny, 28 minut temu 199 źrodło rozwiń
W trakcie przygotowań do prezentacji poświęconej indeksom kolumnowym w SQL Server 2014 (“Clustered ColumnStore Index Deep Dive”) odkryłem kolejny scenariusz, w którym śledzenie liczby odczytów za pomocą SET STATISTICS IO ON jest złym pomysłem. Historycznie takich sytuacji było wiele, że wspomnę o przekłamaniach przy zapytaiach z użyciem funkcji skalarnych (wpis Gail Shaw) czy problemach z ilością odczytów przy planach wykorzystujących parallelism (wpis Aarona Bertranda). Co tym razem? Po kolei ...
Bazy danych i XML 3213 dni, 22 godziny, 28 minut temu 73 źrodło rozwiń
Hej! Dziś zajmę się całkiem, moim zdaniem ciekawym tematem jakim jest biblioteka jQuery, a konkretnie, jak zresztą napisałem już w tytule tego posta, dowiemy się jak stworzyć własną wtyczkę jQuery! Myślę, że zacznę od przedstawienia problemu – tym razem wziął się on z życia, a takie przecież lubię najbardziej Jeśli zaglądacie od czasu do czasu na tego bloga, zauważyliście na pewno, że niektóre wpisy zawierają obrazek nagłówkowy, który gdy wejdziecie do posta, możecie zobaczyć w pełnych ...
Przy okazji wrzucenia mojego pierwszego w historii vloga na temat tego co mnie najbardziej zaciekawiło w ostatnim MTS - nowego podejścia do tworzenia aplikacji dla office 2013 - zebrało mi się na odrobinę refleksji. Zapraszam ;)
W tym wątku opiszę jak odpowiednio skonfigurować usługę WCF by uzyskać efekt RESTful API. Będziemy zwracać obiekty typu jSON/XML - co kto woli. Jeśli już utworzyłeś projekt WCF Service Application, możesz do niego dodać nową usługę lub skorzystać z dodanej domyślnie. Zmieniamy/dodajemy sekcję w Web.config Zwróć uwagę na sekcje service, servicebehaviors, endpointbehaviors - prawdopodobnie w tych miejscach musiałeś wprowadzić zmiany. Mając gotowy Web.config, pokażę prosty przykład, jak pisać metody...
Architektura 3215 dni, 23 godziny, 27 minut temu 234 źrodło rozwiń
ASP.NET MVC dba o to, aby niemożliwe było dokonanie ataku CSRF. Nie musimy sami generować tokenów i wszystko zostanie obsłużone przez framework. Niestety czasami taka obsługa nie jest zbyt user-friendly. Ostatnio spotkałem następujący scenariusz:Otworzyłem stronę do logowania w dwóch osobnych tabach. Sesja jest więc współdzielona.W pierwszej z nich, kliknąłem loguj. Token w tym momencie na serwerze jest unieważniany.W drugim tabie token wygenerowany i przechowany w ukrytym polu, nie pokrywa się już z ty...
Dzisiaj dosyć ważne zagadnienie, a mianowicie filtry autoryzacji. Stosuje się je po to, aby wymusić autoryzację danej akcji i w razie braku autoryzacji po prostu ją zablokować.
Sztuka programowania 3219 dni, 41 minut temu 198 źrodło rozwiń
Last time I finished on negative values requirement. This will be the “almost” last part of the series about String Calculator Kata. There was some interest in more practical TDD examples in business context with services, layers, mocks and external dependencies like database. I will start next series to cover scenarios like that. Current kata is...
Sztuka programowania 3219 dni, 41 minut temu 59 źrodło rozwiń
W tym odcinku skupiam się na stanie aplikacji przed jakimikolwiek procesami “upiększającymi”. Aplikacja, którą mamy upiększyć, została do celów demonstracyjnych zbudowana dość nietypowo. Nie jest to web app, nie jest to nawet console app. Jest to jedna z...
Sztuka programowania 3219 dni, 41 minut temu 228 źrodło rozwiń
Poprzednio odwracałem sterowanie (lub kontrolę, jak kto woli). Dzisiaj pora odwrócić zależność. Zasada odwracania zależności (Dependency Inversion Principle) to ostatnia (licząc wg porządku liter w nazwie) z zestawu zasad SOLID. O co więc chodzi z tą zależnością i na czym tak naprawdę polega jej odwracanie? Najlepiej będzie zademonstrować to na przykładzie. Oglądaliście "Seksmisję" (to już 30 lat od jej premiery)? Był w niej...
Sztuka programowania 3219 dni, 41 minut temu 207 źrodło rozwiń
W dniu 2.06.2014 na Politechnice Wrocławskiej. Odbędzie się mini konferencja, a w niej 2 wykłady: - "Dlaczego musimy męczyć się z danymi, czyli, największe błędy programistów baz danych" – wykład Damiana Widery - Speakera na wielu krajowych i międzynarodowych konferencjach, w tym European PASS Conference oraz Microsoft Technology Summit. Posiada liczne certyfikaty firmy Microsoft, w tym MCT od roku 2005, MCITP-DBA, MCITP-DD, MCSD.NET oraz od 2009 roku tytuł MVP w kategorii SQL Server. - „Kiedy samo IDE ...
Sztuka programowania 3219 dni, 41 minut temu 99 źrodło rozwiń
Automation of desktop applications This article presents principles and best practices related to automation of a desktop application. I will try to explain differences between desktop, web and client/server application to help you to understand influence of unique factors on automation of a desktop application. I am also going to write a few words about tools that are designed to make automation process feasible and easy. For the purpose of this article I will focus on standalone desktop appli...
Jednym ze sposobów na przyspieszenie wczytywania strony internetowej jest asynchroniczne ładowanie skryptów JavaScript. Jest to ważne szczególnie kiedy wykorzystujemy na naszych stronach skrypty znajdujące się na zdalnych serwerach, ponieważ często ich pobieranie trwa długo. Przeglądarki internetowe, domyślnie podczas wczytywania strony przetwarzają poszczególne elementy DOM jeden po drugim czyli synchronicznie. Jako, że script również jest takim elementem, jego przedłużone wczytywanie mo...
Jak można było dowiedzieć się z moich ostatnich postów społecznościowo-konferencyjnych (jeden, drugi, trzeci), miałem ostatnio prezentacje na temat Dependency Injection. Dość dziwne jest to o tyle, że na ten temat nie blogowałem właściwie od czterech lat. Pora zaległości nadrobić:). Pojawiły się za to treści gdzieś indziej. Po jednym z moich występów Basia podjęła temat. Po jej poście Paskol też coś naskrobał. A i w polskiej-anglo...
Architektura 3221 dni, 11 godzin, 55 minut temu 329 źrodło rozwiń
Często słyszę: “TDD powinno sprawiać, że oprogramowanie nie ma bugów”. To bardzo mylne pojmowanie wszystkiego, co się za TDD kryje. I dla tej praktyki mocno krzywdzące, bo gdy się okazuje, że tak nie jest, to ludzie się zniechęcają. Starałem się zdecydowanie podkreślać ten fakt podczas moich wystąpień na temat unit testów w zeszłym i za-przeszłym roku. Może w kontekście ostatnich wydarzeń w świecie unit...
Sztuka programowania 3225 dni, 4 godziny temu 281 źrodło rozwiń
W najnowszej wersji 5, mamy do dyspozycji nowy rodzaj filtrów, implementujący interfejs IOverrideFilter:publicinterface IOverrideFilter { ///////// Type FiltersToOverride { get; } } Atrybuty przydają się, gdy mamy jeden filtr nałożony globalnie i potem chcemy zmienić zachowanie wyłącznie dla specyficznej akcji. Na przykład, możemy nałożyć Authorize globalnie i potem dla konkretnej akcji zmienić reguły autoryzacji. Innymi słowy, IOverrideFilter umożliwia wyczyszczenie wszystkich filtrów dla konk...
TDD – commit by commit String Calculator Kata (III) Posted on by Michal Franc Previous post in the series – TDD – commit by commit String Calculator Kata (II) In the previous post I did a cleanup phase and added one feature to the String Calculator. The kata is not finished yet.Step VIII – Different Delimiters String Calculator should support different delimiters. Previous solution was just a hard-coded hack, still it was good enough solution. There wasn’t any requirement that would suggest a need f...
Sztuka programowania 3226 dni, 2 godziny, 52 minuty temu 63 źrodło rozwiń
David H Hannson, autor Ruby on Rails opublikował artykuł: no i poszło… mleko się rozlało. Burza większa niż o sosnę (tą rozdartą – nie o brzozę, brzozy są niepolityczne). Uncle Bob napisał http://blog.8thlight.com/uncle-bob/2014/05/11/FrameworkBound.html ale jak wie...