Ostatnio dodawałem prostą funkcję do pewnej aplikacji webowej: umożliwienie ściągnięcia pliku z dysku. Były to pliki Excela i znajdowały się w katalogu ~/App_Data/reports. Siłą rzeczy takie pliki nie mają ID. Mają nazwę. I po nazwie właśnie je się ściągało. Kod otwierający plik do ściągnięcia można by napisać tak: public Stream OpenFile(string fileName) { string reportsdir = HttpContext.Current.Server.MapPath("~/AppData/reports...
Dzisiaj chciałbym przedstawić framework WatiN, który służy do automatyzacji testów. Symuluje on po prostu przeglądarkę internetową (dosłownie). Za pomocą niego, możemy otworzyć IE, wejść na daną stronę czy kliknąć w jakiś przycisk. Wszystkie operacje takie jak kliknięcie w link czy nawet maksymalizacja okna są możliwe dzięki WatiN. Docelowo używa go się w połączeniu z nUnit albo SpecFlow. Zacznijmy jednak od zwyklej aplikacji konsolowej. Załóżmy, że chcemy wejść na Google.pl, wpisać tekst i kliknąć w pr...
Retarget na Windows Phone 8.1 / Store Validation Errors Odkąd pojawił się Windows Phone 8.1 deweloperzy mają możliwość przenoszenia swoich aplikacji na właśnie ten system. Dodatkowo, żeby ich do tego zachęcić na dvlupie pojawiło się kilka challenge`y, które pozwalają zdobyć kilka punktów za implementację rozwiązań z WP 8.1 (np przezroczyste kafelki) Teoretycznie wszystko powinno skończyć się po 2 kliknięciach. Jednak w momencie wrzucania aktualizacji na store Windows Phone możemy natrafić na kilka probl...
Building better client-side JavaScript applications For some time now, you could have noticed a trend in web applications development to build more and more complicated applications, moving more logic from the server to the client side. Is it an appropriate trend? I don’t know. The discussion between supporters and opponents of each approach may look like discussion concerning superiority of Easter over Christmas; it’s hard to concede the point to any side as they have their arguments. That is w...
Obiekty Hub mają z góry określony czas życia. Ten sam obiekt nie jest współdzielony pomiędzy różne wywołania. Jeśli klient wywołuje metodę, instancja huba jest tworzona od nowa. Oznacza to, że nie możemy przechować stanu między zapytaniami w następujący sposób
Dzisiaj trochę więcej szczegółów na temat, jak można wywoływać metody w Hub API. W ostatnim wpisie, zaimplementowaliśmy klasę, która wykonuje metodę po wszystkich klientach (broadcast). SignalR ma ogromne możliwości i istnieje wiele innych wzorców. Dla przypomnienia broadcast wygląda następująco:publicvoid SendMessage(string message) { Clients.All.newMessage(string.Format("{0}: {1}",DateTime.Now,message)); } Clients posiada kilka metod, służących do wysyłania wiadomości w różnych sposób. Na przykła...
Zastanawiacie się co to takiego ten tunel kodu? Otóż chodzi tutaj o specyficzny stan świadomości, z dużym skupieniem i widzeniem tunelowym, w który mogą wejść programiści tworzący kod. Można o nim przeczytać np. w książce autorstwa Roberta C. Martina "Mistrz czystego kodu. Kodeks postępowania profesjonalnych programistów", choć tam nosi on nazwę strefy lub przepływu (flow). Zgodnie z opisem we wspomnianej książce, stan ów charakteryzuje się tym, że znajdujący się w nim programiści czują się ...
Sztuka programowania 3832 dni, 19 godzin temu 308 źrodło rozwiń
Metody rozszerzające i ich ciekawa właściwość...
Sztuka programowania 3833 dni, 16 godzin, 49 minut temu 416 źrodło rozwiń
0xDBE jest nowym narzędziem do zarządzania bazami danych stworzonym przez JetBrains. Znając R# oraz słysząc opinie o inych ich produktach można mieć nadzieję że będzie dobre. Jednak zamiast mieć nadzieję lepiej po prostu sprawdzić, a można to zrobić dzięki "Early Access Program". Skorzystał z niego Maciek Aniserowicz i wyraził się dość niepochlebnie. A więc postanowiłem sprawdzić to narzędzie sam.
Bazy danych i XML 3838 dni, 16 godzin, 9 minut temu 313 źrodło rozwiń
Ten post jest częścią cyklu o Dependency Injection. Ostatnim razem rozstaliśmy się w takim napięciu, że aż jeden z Czytelników nazwał to cliffhangerem (nauczyłem się nowego słowa!). Zanim jednak zaczniemy przyglądać się rozwiązaniu naszej niewesołej sytuacji (nie kompiluje się, buuu): chwila refleksji i nader trafnego (a jak!) porównania. Znacie te potworki przedstawione na obrazku? Matrioszka. Ruska drewniana baba...
Sztuka programowania 3838 dni, 16 godzin, 9 minut temu 281 źrodło rozwiń
Nigdy nie podobały mi się te magic stringi przy wywoływaniu PropertyChanged okazuje się że innym też nie
Architektura 3838 dni, 16 godzin, 9 minut temu 233 źrodło rozwiń
Ostatnio pisałem o systemie automatyzacjipracy grunt. Tak jak wspomniałem ma on swoje wady i zalety. Na szczęście nie jest to jedyna opcja jaka jest dostępna dla światka JavaScript.gulp.js The streaming build system Konkurencją dla grunt jest gulp.js (niektórzy nawet mówią, że grunt jest pase a gulp trendi) – narzędzie, które działa na zasadzie code-over-configuration z prostym API (to tutaj IMO jest najważniejsze – wystarczy porównać dwa skrypty robiące to samo w grunt i w gulp by zobaczyć, że gulp je...
Ptacy ćwierkali już od jakiegoś czasu, że JetBrains coś szykuje. Ja byłem praktycznie pewny, że nie będzie to IDE dla C#, bo ten temat wałkowany jest właściwie od lat. Więc… cóż to mogła być za niespodzianka? Okazało się, że jest to 0xDBE: nowe IDE, tyle że nie do C#. Jest to IDE do pracy z bazami danych! Ucieszyłem się niezmiernie, ponieważ już 5 lat temu pisałem, że nienawidzę Management Studio (“Dlaczego ni...
Bazy danych i XML 3838 dni, 16 godzin, 9 minut temu 276 źrodło rozwiń
Witam, po krótkiej przerwie spowodowanej przedłużonym weekendem oraz oglądaniem mundialu w Brazylii Na szczęście dziś wieczorem gra najmniej ciekawa grupa, postanowiłem więc wykorzystać to „okienko” na napisanie nowego wpisu. Nie mogę Was przecież za bardzo zaniedbywać… Ostatnimi czasy zauważyłem sporo wpisów w blogosferze (przynajmniej w tej, którą sam subskrybuję) na temat Velocity.js… Szczerze mówiąc nie znałem wcześniej tego pluginu jQuery. Jednak po b...
Game programming with F#, C# and SFML – GameLoop Posted on by Michal Franc I am a F# apprentice. The best way to learn new language is to do some project. That’s why I have started to code one game idea that was following me for some time. Core concept: sci-fi settingroguelikeinspired by: dwarf fortressprison architectcataclysm dda Because I don’t care about the graphics but the game-play, the graphic I am going to use will be an ASCII styles tile set. You know symbols, characters, letters and some...
Sztuka programowania 3838 dni, 16 godzin, 9 minut temu 181 źrodło rozwiń
Wynalazłem taką bibliotekę do grafiki wektorowej, jakaś ważna w linuxach w ogóle i wrapper .net robi do niej mono. Łatwo z jej pomocą coś narysować np. na pdf, działa też w Visual Studio z .net40. Nawet miałem ją w referencjach widzianych z Visual Studionie wiem już z jakiej okazji
Zainstalowałem wczoraj rozszerzenie do VS 2013, które pozwala na uniknięcie pozostawiania białych znaków w kodzie. Bardzo prosty dodatek, o którym nawet bym nie pomyślał, gdyby nie przypadek. Przykładowy zrzut ekranu...
Bez zbędnego przeciągania i całego bałaganu związanego z założeniem nowego bloga i przywitania z czytelnikami, przechodzę do rzeczy. W obecnie pisanej przeze mnie aplikacji WPFowej zaistniała konieczność dodania testów dla użytkowników (nie mam na myśli unit testów, a testów sprawdzających jednokrotnego wyboru). Rozwiązaniem, jakie pierwsze przyszło mi do głowy, jest przechowywanie d...
Dzisiaj krótki wpis o zachowaniu wszystkich przeglądarek, które niezwykle mnie zaskoczyło. W formularzu znajduje się pole tekstowe, które może być albo uzupełnione z palca, albo jego wartość może być wyliczona metodą javascriptową...
23/06/2014Leave a commentarystokracja, komentarz, praca, refleksje, zawód-programistaprocentpro Ostatnio odniosłem się (“O arystokracji, część 1“) do artykułu “IT-arystokracja. Najbardziej zepsuta pensjami i przywilejami grupa zawodowa“. Dziś – kontynuacja, z trochę innej strony. Rzeczywistość Czy faktycznie autor artykułu po prostu wylał swoje frustracje, bezpodstawnie biorąc nas na celownik… “bo tak”? Bo siłą rzeczy rozniesie się to po internetach i podbije statystyki na stronie? A racji w tym art...