Skoro już mamy nasze środowisko przygotowane i wiemy co i jak z tym grunt, to pora się nim trochę pobawić :) UWAGA: to jest przykład, nie twierdzę że najlepiej napisany, chodzi głównie o pokazanie co można zrobić.Krok 0 – przygotowanie środowiska W aplikacji będziemy wykorzystywać grunt jak i bower, więc warto sobie przypomnieć jak te dwie rzeczy zainstalować :)npm bower -g install npm grunt-cli -g install Krok 1 – informacje na temat aplikacji i struktury katalogów W tym celu wykorzystamy przykładową...
Rozważmy przez chwilę scenariusz wysyłania wiadomości e-mail. A raczej tą część procesu, w której generowana jest treść. W tagu demo3-finish mamy taki interfejs: public interface IEmailService { void RegistrationEmail(string email, string link); } (https://github.com/maniserowicz/di-talk/blob/demo3-finish/src/app/EmailService.cs) Jego implementacja powinna zająć...
Sztuka programowania 2406 dni, 13 godzin, 32 minuty temu 262 źrodło rozwiń
Ostatnio omawialiśmy co to jest NPM oraz co to jest Bower. Pora na coś z czego będzie nam naprawdę ciężko (do póki nie poznamy alternatywy ;)) żyć w świecie JavaScript.Grunt The JavaScript Task Runner Grunt jest to system automatyzacji pracy – nie zależnie co robimy, czy to ma być statyczna strona w HTML i JavaScript, czy bardziej zaawansowana aplikacja wykorzystująca coffee script, czy też po prostu coś co chcielibyśmy z automatyzować. W odniesieniu do naszego świata .NET Grunt można porównać z MSBUIL...
Postawiłem przed sobą dość proste zadanie dodania nowego 'ficzeru' do pewnej wewnętrznej ministronki w firmie. Ot, taka mała lista obsługiwanych aplikacji. Z biegiem czasu 'mutacji' produktu powstało wiele, dlatego lista stała się dość pokaźna i znalezienie czegoś w niej stało się trudne.
Microsoft idąc śladami Chrome i Firefoxa, stworzył dla swojej flagowej przeglądarki Internet Explorer specjalny kanał deweloperski. Dzięki tej usłudze, każdy zainteresowany może już pobrać i przetestować nowości, które dopiero pojawią się w kolejnych wersjach finalnych przeglądarki www.
Niedawno na łamach natematu pojawił się artykuł o jakże wdzięcznym tytule: “IT-arystokracja. Najbardziej zepsuta pensjami i przywilejami grupa zawodowa“. Widziałem linki do niego w bardzo wielu miejscach, więc pewnie każdy z Was go już czytał. A teraz się do niego ustosunkuję (po raz wtóry, gdyż raz już to, trochę po łebkach, uczyniłem na grupie polskich programistów .NET na FB). Odnośnie artykułu Sam art...
W poprzednim wpisie wspomniałem o metodzie ToBitmap klasy Image pozwalającej na konwersję klasy Image na klasę System.Drawing.Bitmap, co pozwala na używanie wyniku obróbki obrazu w kontrolkach Windows Forms. Jednak taka konwersja nie należy do najszybszych operacji, po za tym powoduje zwiększenie zużycia pamięci, ponieważ obraz jest przechowywany w pamięci w dwóch postaciach. Ponieważ najczęstszym zastosowaniem obrazów jest ich wyświetlanie do EmguCV została dodana kontrolka ImageBox.
Zgodnie z powiedzeniem "im mniej wiesz, tym lepiej śpisz", postanowiłem napisać krótką notkę o tym, jak ukryć HelpPage w usłudze WCF. Warto wspomnieć na początku, że sporo się naszukałem w Google, żeby dowiedzieć się, że ta strona nazywa się HelpPage :- D Dla niewiedzących, mam na myśli to: Po wyłączeniu HelpPage'u, pozostaje nam ukryć WSDL. Jeśli tak jak w tym przypadku nasza usługa nie działa jako SOAP, możemy sobie pozwolić na ukrycie WSDL. Programistom piszącym aplikacje klienckie, będzie i tak ci...
Architektura 2408 dni, 21 godzin, 13 minut temu 117 źrodło rozwiń
Parę moich uwag jako postscriptum do burzy rozpętanej przez całkiem niewinny artykulik: http://natemat.pl/105597,it-arystokracja.
OK – mamy niektóre “odpowiedzialności” wyjęte do osobnych klas. Ale co dalej? Czy UsersController powinien sam, ot, tak sobie, tworzyć nowe instancje których aktualnie potrzebuje? Nie! Pójdę o krok dalej i powiem więcej: użycie słowa kluczowego “new” w kodzie aplikacji uznaję za anti-pattern. Howgh, rzekłem. Jeżeli klasa potrzebuje innej klasy do działania, to ta zależność powinna być jawnie wyeksponowana w kodzie. Najlepiej przez param...
Sztuka programowania 2413 dni, 10 godzin, 8 minut temu 209 źrodło rozwiń
Co prawda nie jest to ani blog ani wpis .Netowy, nie jest nawet techniczny. Wydaje mi się jednak, że każdy kto pracuje jako B2B powinien takie rzeczy wiedzieć i warto, żeby takie coś znalazło się na dotnetomaniaku.
EmguCV jest .Netowym wrapperem do OpenCV - potężnej biblioteki do przetwarzania i analizy obrazów (zarówno statycznych jak i ruchomych) oraz innych sygnałów cyfrowych. Ważną cechą biblioteki jest fakt iż stara się ona wykorzystać jak najlepiej zasoby dostępne na maszynie na której jest ona uruchomiona, ze szczególnym uwzględnieniem karty grafiki.
O finalizers czy też destruktorach pisałem już wielokrotnie. Wspomniałem również, że lepiej ich unikać, jeśli oczywiście to możliwe. Głównym problem jest możliwość wypromowania obiektu do kolejnych generacji, ponieważ obiekty z destruktorami są umieszczane w kolejce freachable, gdzie na nową stają się osiągalne. Jeśli ktoś nie pamięta, to polecam najpierw poczytanie o tym (w dziale articles są linki do moich tekstów o GC). Dzisiaj jednak chciałbym wspomnieć o czymś innym. Wiemy, że jeden wątek zwykle m...
Sztuka programowania 2413 dni, 10 godzin, 8 minut temu 156 źrodło rozwiń
Kiedyś na stronach MS widziałem rekomendację mówiącą “używaj typów wyjątków dostarczanych przez framework”. Jakiś czas temu, na jakimś polskim chyba blogu, przeczytałem tego powtórkę. Wiecie co? U mnie się doskonale sprawdza kompletne przeciwieństwo tej praktyki. Zawsze w swoich aplikacjach staram się mieć jeden bazowy typ wyjątku, abstrakcyjna klasa MyAppException: Exception. Dzięki temu jestem w stanie wyłapać wszystko co rzuca mój...
Sztuka programowania 2415 dni, 14 godzin, 56 minut temu 251 źrodło rozwiń
The topic of custom exceptions is surprisingly controversial. Some argue that exceptions shouldn't be used for anything related to "business", while others (me included) say that exceptions like InsufficientFunds are fine - I even wrote a whole chapter about using custom exceptions to simplify controllers in my Rails Refactoring book. I've read an interesting blog post today about custom exceptions (here - unfortunately it's in Polish), where the author advocates for using "business exceptions". ...
Sztuka programowania 2415 dni, 14 godzin, 56 minut temu 147 źrodło rozwiń
Nie tak dawno, bo raptem dwa wpisy temu, pokazywałem podstawy tworzenia wtyczek jQuery. W ramach tamtego posta, mogliście zobaczyć jak rozwiązałem kwestię wyświetlania, na głównej stronie tego bloga, wycinków zdjęć nagłówkowych dodawanych przeze mnie do niektórych postów. Na tej podstawie stworzyłem „zalążek” wtyczki jQuery. Postanowiłem jednak, że pójdę z tym tematem dalej i tak powstała pierwsza wersja mojego pierwszego własnego plugina do tej biblioteki...
I have started learning F# again, thanks to @isaac_abraham and his great presentation in my company. This time hopefully, I will move past the “WTF”, barrier and move to “AHA” moment. I am ready to finally start serious F# learning with couple of milestones like: project euler, tool, web-app, complex project. I will try to document whole process on the blog. I want to force myself and learn new functional paradigm. Hopefully it will give me a new way to loo...
Rules of data conversion from document to relational databases This article is hypothetical divagation how to determine and use a set of rules to create relational schema based on MongoDB data. Using only step by step analysis without creating relational model from the very beginning, rules that emerge from that understanding should be simple.1. Quick Introduction to Data Model in Mongo DB1.1. Basic Concepts Table presents the various SQL terminology and concepts as well as the corresponding Mo...
Bazy danych i XML 2415 dni, 14 godzin, 56 minut temu 65 źrodło rozwiń
Sprawa komunikowania klienta w usłudze WCF pracującej jako RESTful może nie być proste na pierwszy rzut oka, jednak chwila googlingu i sprawa okazała się banalna. Jak skonfigurować usługę WCF żeby działała jak RESTful? Nasz interfejs, oraz usługa wygląda mniej więcej tak: Interfejs: [ServiceContract] public interface Iv1 { [OperationContract] [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, UriTemplate = "user/{id}")] User g...
Architektura 2415 dni, 14 godzin, 56 minut temu 114 źrodło rozwiń
Już kilka tygodni typu pisałem o ASP.NET MVC 5 Scaffolding. Jak wspomniałem, domyślny szablon nadaje się do prototypów albo tymczasowych aplikacji. W praktyce będziemy chcieli wykorzystać IoC i własne usługi, a nie bezpośrednio operować na bazie danych. Za pomocą własnego szablonu, można wszystko dostosować do konkretnego projektu i infrastruktury. Najpierw ściągamy pakiet szablonów VS z http://sidewaffle.com/. Oprócz tego, musimy zainstalować Visual Studio 2013 Update 2 oraz Visual Studio 2013 SDK. Na...