Piękno ASP.NET MVC polega na tym, że prawie wszystko można wymienić, zamienić, przetestować… tyle tylko, że Ci goście z Microsoftu uwielbiają internal-e. Wszysko co się da dają jako internal a może nawet więcej. No i tyle byłoby z testowalności, ale do rzeczy. Piszę własny ControllerFactory ale nie zupełnie od zera. Chcę standardowej funkcjonalności ale też chcę ładować jak pluginy z luźnych dll-ek. Nic prostszego, wystarczy trochę zmodyfikować DefaultControllerFactory i jeśli standardowe...
Firmy to dziwne instytucje, czasem ich wymagania są tak dziwaczne, że trudno nadążyć i/lub sprostać. Już dawno przestało mnie dziwić, że w roku 2013 widzę w ofercie wykonania projektu potrzebę zgodności z Internet Explorer 6 (sic!), ale ostatnio w tych samych dokumentach pojawia się też druga wartość.. wersja 11, dobrze, że nie piszą nic o zgodności z wersją 2, 3 i 4, ale to może tylko kwestia szczęścia w otrzymywanych propozycjach. Co zrobić? Jak żyć? Gdzie zdobyć te dziwaczne wersje przeglądarek fir...
In the project, I am working with, there is a simple feature that imports data from external source. Import is only interested in new records. This condition is fulfilled with ‘DateTime’ comparision. Looks simple, Unfortunately I have encountered a nice ‘bug’.
Sztuka programowania 3587 dni, 17 godzin, 5 minut temu 90 źrodło rozwiń
Tak się złożyło, że ostatnio dużo czasu w pracy spędzam nad MS SQL z wykorzystaniem SQL Management Studio 2012 i czuję mały niedosyt. Nie mówię, że edytor jest zły czy coś, ale przeglądanie informacji w oknie "Object Explorer" przy ~200 procedurach składowanych, ~100 funkcjach i 3-4 wyzwalaczach na każdą z tabel nie należy do przyjemności (nie wspominając już o straconym czasie). Tym bardziej jeżeli wchodzi się w głąb zależności pomiędzy obiektami, szaleństwo. Może gubią mnie moje przyzwyczajenia z Visua...
Bazy danych i XML 3588 dni, 15 godzin, 52 minuty temu 103 źrodło rozwiń
Zacznijmy od synchronicznego kodu:internalclass Program { privatestaticvoid Main(string[] args) { ShortMethod1(); ShortMethod2(); ShortMethod3(); } privatestaticvoid ShortMethod1() { Console.WriteLine("1"); } privatestaticvoid ShortMethod2() { Console.WriteLine("2"); } privatestaticvoid ShortMethod3() { Console.WriteLine("3"); } } Mamy powyżej przykład 3 metod, które wykonują bardzo proste operacje. Nie są one zbyt skompl...
Sztuka programowania 3589 dni, 20 godzin, 51 minut temu 80 źrodło rozwiń
Ostatnio w pracy przygotowałem i prowadziłem małą prezentację dotyczącą frameworka RequireJS upraszczającego ładowanie plików i modułów. Postanowiłem więc podzielić się tym materiałem również tutaj na blogu. Uprzedzam, że nie będzie to post dla zaawansowanych a jedynie wprowadzenie - coś w rodzaju tutoriala "jak zacząć".
Pytanie “przechowywać, czy nie przechowywać” pojawia się praktycznie przy okazji każdego projektu, w którym trzeba przesłać coś więcej niż proste formy do i od użytkownika. Szkoły są dwie (plus hybryda, o czym za chwilę), jednak wybór, która w danym wypadku jest najlepsza zależy w dużej mierze od specyfiki samej aplikacji oraz rozwiązań technicznych użytych w projekcie.
Sztuka programowania 3592 dni, 6 godzin, 46 minut temu 190 źrodło rozwiń
Zanim przejdziemy do pokazania przykładów jak optymalizować async\await najpierw trzeba zrozumieć implementację wewnętrzną w .NET. Bez tego ciężko będzie cokolwiek optymalizować. Na początku async\await wydawał mi się również czymś niezwykłym, a jak zacząłem zagłębiać się w kod IL, okazało się, że to bardzo prosty mechanizm i mógłby być napisany przez każdego z nas. Kod korzystający z async\await wygląda na synchroniczny. Pod spodem jednak są zwykłe callback’i – dokładnie tak jakby było to napisane w po...
Sztuka programowania 3592 dni, 15 godzin, 13 minut temu 161 źrodło rozwiń
W kolejnych kilku wpisach, zajmiemy się async\await ale od strony wydajnościowej. Jeśli ktoś nie wie do czego te słowa kluczowe służą, zachęcam przeczytać np. mój artykuł o programowaniu asynchronicznym w .NET 4.5. Sposób korzystania z async\await jest bardzo prosty. Do tego stopnia, że programowanie asynchroniczne wygląda w zasadzie tak jak synchroniczne podejście. W kodzie nie ma callback’ow a przepływ logiki wygląda na sekwencyjny. Niestety, trzeba być świadomym jakie pułapki czekają na programistów...
Sztuka programowania 3595 dni, 19 godzin, 40 minut temu 287 źrodło rozwiń
http://www.devday.pl/2013/Register Właśnie ruszyły zapisy na najlepszą w tej szerokości geograficznej konferencję dla developerów. Zapisy potrwają do 16-tego sierpnia. Dobrze zastanów się dlaczego to Ty powinieneś otrzymać zaproszenie bo lista uczestników jest bardzo zacna a będzie jeszcze bardziej zacna jak wszyscy prelegenci zostaną ogłoszeni To też może Cię zainteresować:DevDay – ruszają zapisyDevDay–konferencja na którą mogę jeździć co miesiącHTTP Caching 101 – wideo prawie z D...
Opublikowano W poniedziałek pisałem, że nie testowałem scriptcs-sublime. To się już zmieniło. Zainstalowałem i działa. Co więcej zainstalowałem drugi plugin build-with-input a to wszystko po to aby móc do skryptu przesłać coś za pomocą klawiatury bezpośrednio z poziomu samego sublime text-a.Instalacja: w konsoli gita teleportuję się do C:\Users[uzytkownik]\AppData\Roaming\Sublime Text 2\Packages i wpisujemy magiczne znaki runiczne: git clone https://github.com/scriptcs/scriptcs-sublime.git oraz gi...
Dzisiaj na szybko wrócimy z powrotem do tematu TPL Data Flows. Jakiś czas temu pisałem o różnych blokach w TPL DataFlows. Nie opisałem jednak TransformManyBlock. TransformManyBlock jest analogiczny do TransformBlock z tym, że na wyjściu jest kolekcja więc możliwe jest zwrócenie kilku wartości. TransformBlock służył wyłącznie do przetworzenia parametru i zwrócenia pojedynczego wyniku. Ktoś może zapytać, czy to nie to samo co przekazanie jako typu generycznego IEnumerable do TransformBlock – też wtedy na...
Sztuka programowania 3597 dni, 10 godzin, 37 minut temu 46 źrodło rozwiń
Opublikowano O ScriptCS było głośno kilka miesięcy temu (bodajże w marcu) gdy pojawił się na .netowej scenie. W dużym skrócie jest to uskryptowiona wersja C#-a. To powoduje, że jeśli chcemy zbudował/przetestować kawałek kodu, nie musimy odpalać całego Visuala. Wystarczy napisać: Console.WriteLine(“hello scriptcs”) i powinno się wykonać (tak – na końcu nawet nie ma średnika). Do wykonania powyższego będziemy potrzebowali najnowszych źródeł ScriptCS-a https://github.com/scriptcs/scriptcs któr...
W sprawie wydajności wyjątków można znaleźć wiele opinii, często sprzecznych ze sobą. W dzisiejszym wpisie przedstawię kilka programików, mających na celu, wyjaśnienie jaki wpływ mają wyjątki oraz ich łapanie na wydajność aplikacji. Zacznijmy od przykładów a potem przejdziemy do analizy wyników. Kod z wyrzucaniem wyjątków: internalclass Program { privatestaticvoid Main(string[] args) { constint n =20000; Stopwatch stopwatch = Stopwatch.StartNew(); for (int i =0; i < n;="" i+...
Sztuka programowania 3600 dni, 22 godziny, 21 minut temu 284 źrodło rozwiń
And how are you defining your variables?
Sztuka programowania 3601 dni, 21 godzin, 46 minut temu 206 źrodło rozwiń
Rest API is cool but what will you going to say about making is also fully asynchronous with async and await keywords? I invite you to read.
Często spotykam następujące konstrukcje:class RiskInfo { publicint Condition{get;set;} publicdouble Score{get;set;} } Innymi słowy, kontener na kilka prostych zmiennych. Jeśli ktoś nie zna zasady działania Garbage Collector, gorąco zachęcam do przeczytania np. mojego cyklu artykułów o GC. Usunięcie obiektu z pamięci to nie prosta sprawa i naprawdę wiele musi zostać wykonanych operacji w tle. Z tego względu, jeśli klasa jest mała i posiada wiele instancji, wtedy dużo lepiej skonwertować ją do s...
Sztuka programowania 3604 dni, 16 godzin, 22 minuty temu 234 źrodło rozwiń
W FP bardzo cenimy sobie rozwój, jednym z dobrych sposobów zdobywania wiedzy jest uczestniczenie we wszelkiego rodzaju konferencjach i eventach. Jak co roku, kilka osób wybrało się na kolejną edycję konferencji GeeCon, tym razem do Krakowa, w celu poszerzania horyzontów w Javovym świecie. Zapraszam na relację z konferencji opracowaną przez Zespół w składzie: Marcin Kania, Grzegorz Masłowski, Paweł Rychlik.
A to niespodzianka…serwery w chmurze czasu nie liczą – czyżby były tak szczęśliwe? Wracając do meritum sprawy…jeżeli macie kilka…dziesiąt serwerów w Azure, które robią coś razem zauważycie mały problem… niezgodność czasu. W przypadku serwerów jakie mamy w projekcie PlaceChallenge, to było od 2 do 47 sekund – powiedziałbym, że dość dużo. Po rozmowie z miłym Panem z Indii wiadomo co jest problemem… problem to Hyper-V, który hostuję te maszyny. Hyper-V (wirtualizator) ma problem z odpowiednim synchro...
Architektura 3604 dni, 16 godzin, 22 minuty temu 125 źrodło rozwiń
Visual Studio 2012 ma wsparcie dla nUnit. Wcześniej wspierał oficjalnie wyłącznie własne testy jednostkowe. Należy jednak najpierw zainstalować adapter. Wystarczy przejść do Tools –> Extensions and Updates –> Online –> Visual Studio Gallery –> Tools –> Testing i wybrać NUnit Test adapter: Po instalacji do dyspozycji mamy Test Explorer (VS): Najciekawszą chyba częścią jest możliwość sprawdzenia pokrycia kodu przez testy: Klikając na którąś z pozycji zostaniemy przekierowani bezpośrednio do kodu. ...