We have many pdf libraries that we can use, but none of them are perfect and all of them have some advantages and disadvantages. Here is my little experience with generating PDF file in .net framework with generating reports both, in a browser on demand and large numbers in bash/console by night. Crystal_Reports - big, commercial library develop by big company Pros: - can be really fast Co...
Jeśli API, z którego musisz skorzystać dostarcza Ci dane w 'brzydkiej' formie, zmapuj je. Dodaj warstwę abstrakcji i ukryj złe struktury.
Sztuka programowania 2486 dni, 14 godzin, 18 minut temu 158 źrodło rozwiń
Reading time ~2 minutes In the previous post I’ve wrote about why I think the ability to schedule tasks for later execution is a fundamental technical feature, but also a must have from a business point of view. We are passed the whys, so lets get to the hows. The answer is simple - Hangfire. I’ve wrote about it here, here and here, so yeah, I like it. Hangfire is an amazing library. It has proved itself in my pet project (cookit.pl) and in a huge ERP system that we are building at work, where we repla...
Architektura 2486 dni, 14 godzin, 18 minut temu 151 źrodło rozwiń
Kolejne zadanie rekrutacyjne na tapecie. Autor przedstawia kilka możliwych rozwiązań, wraz z analiza wad i zalet każdego z rozwiązań.
Sztuka programowania 2486 dni, 14 godzin, 18 minut temu 298 źrodło rozwiń
VS automatycznie transpiluje pliki *.ts do *.js. W wielu przypadkach, lepiej robić to przy pomocy innych narzędzi (gulp) - wówczas warto wyłączyć tą funkcję w Visual Studio.
Tym razem omówiona ciekawa właściwość języka python. Na przykładzie zadania rekrutacyjnego
Sztuka programowania 2486 dni, 14 godzin, 18 minut temu 208 źrodło rozwiń
Dzisiaj kolejna przydatna konstrukcja LESS. Często zachodzi potrzeba stworzenia klasy na podstawie kilku innych klas. Załóżmy, że mamy: .class1 { color:red; } .class2 { font-size:10px; } .finalClass { color:red; font-size:10px; border-color:blue; } FinalClass składa się zarówno z class1 jak i class2. Ponadto rozszerza możliwości o border-color. Za pomocą mixin możemy kod skrócić do: .class1 { color:red; } .class2 { font-siz...
Xamarin.Forms nie jest lekiem na całe zło i w praktyce nie da się za pomocą tej technologii zrobić w pełni natywnego efektu, stosując dostępne standardowo kontrolki. Idea tego rozwiązania jest inna. Do worka zwanego Xamarin.Forms trafiają takie elementy, które da się jakoś uwspólnić pomiędzy obsługiwanymi systemami. Innymi słowy po użyciu określonej kontrolki i tak w rzeczywistości zostanie wykorzystana ta natywna, która w danym systemie jest najbardziej zbliżona funkcjonalnie i wizualnie. I tak np. Form...
Sztuka programowania 2487 dni, 3 godziny, 17 minut temu 45 źrodło rozwiń
Krok po kroku opis rozwiązania zadania rekrutacyjnego. Zaczynamy od rozwiązania najprostszego i stopniowo je poprawiamy. Przykłady w c++
Sztuka programowania 2487 dni, 9 godzin, 43 minuty temu 477 źrodło rozwiń
Mniej więcej 3 miesiące temu zainteresowałem się biblioteką SignalR i bardzo szybko stała się ona jednym z moich ulubionych narzędzi. Z mojego polecenia skorzystało z niej kilka osób i każdy chwalił ją za bardzo szybkie widoczne efekty i banalną implementację. O czym nie wspomniałem w poprzednich postach, to połączenie SignalR z jednym z najpopularniejszych obecnie frameworków JavaScriptowych - AngularJS.
Zarys API kart bezstykowych z rodziny MIFARE, oraz przykład jak sie z nimi komunikować przy pomocy czytnika ACR122.
There are many ways to perform a validation of our models living within the system. Whether there’s an incoming request from the user who would like to create an account or there’s a need to ensure about the correct amount of money in a bank transaction, the validation process should always (I really mean that) take place. In today’s post, I’d like to present one of the possible solutions that might help you validate your entities.
Sztuka programowania 2489 dni, 8 godzin, 22 minuty temu 162 źrodło rozwiń
SQL Server Management Studio (SSMS) to środowisko do zarządzania bazą danych Ms SQL. Niestety niewiedzieć czemu, IntelliSense w tym IDE działa bardzo, bardzo przeciętnie. Zmusiło mnie to do poszukiwań narzędzia, które wypełni tę lukę. Długo szukałem i w końcu znalazłem. Wreszcie mam rozwiązanie, które satysfakcjonuje mnie na tyle, że mogę go zaliczyć do grona Niezbędnika developera.
Klasa (immutable) Tuple istniała aż od .NET Framework 4.0. W C# 7.0 mamy jednak wsparcie dla tuple od strony języka. Jednym z problemów klasy Tuple było, że każda właściwość nazywała się kolejno Item1, Item2 itp. W tym wpisie dowiemy się jak to rozwiązano w C# 7.0
Sztuka programowania 2493 dni, 14 godzin, 25 minut temu 391 źrodło rozwiń
Public, Protected, Private Do czego służą modyfikatory dostępu? Do ograniczania dostępu do metod, pól i właściwości klas (C#). Ograniczenie to sprawdzane jest w trakcie kompilacji i gdy sięgasz za daleko taki komunikat pojawia się na ekranie: Error CS0122 ‚Test.fooPrivate()’ is inaccessible due to its protection level. Ale wystarczy odrobina refleksji tu i tam i można spokojnie olać modyfikatory: Klasa Test (@21) to twór na potrzeby przykładu. Wcześniej (@9) tworzę in...
Architektura 2493 dni, 14 godzin, 25 minut temu 169 źrodło rozwiń
TFS kompiluje, Jenkins instaluje, ale co testuje? Do tej pory widziałem w tej roli Jenkinsa, ale... Poznałem coś nowego. Fajnego :)
ASP .NETPiotr Zieliński1 Comment ASP.NET Core ułatwia w znaczący sposób IoC. Przede wszystkim wbudowano w framework dosyć prostą implementację IoC. Oznacza to, że w wielu przypadkach nie trzeba już instalować zewnętrznych framework’ow takich jak AutoFac. W pliku Startup znajdziemy metodę ConfigureServices: public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddApplicationInsightsTelemetry(Configuration); ...
Sztuka programowania 2493 dni, 14 godzin, 25 minut temu 277 źrodło rozwiń
Today we are going to have a little break from our CQRS/ES journey, but I hope you’ll like that article anyway. Meet Aspect-Oriented Programming! An approach that’s going to change the way of writing our code and more importantly will help us to keep it clean and simple (in most cases). The idea Writing the code we can often observe that the certain group of the non-business functionalities is copied in many areas, and moreover, it affects other parts of our system. Here we can include: creating datab...
Sztuka programowania 2493 dni, 14 godzin, 25 minut temu 168 źrodło rozwiń
Kiedy budujemy naszą bibliotekę, w końcu nadejdzie czas aby ją nazwać. Ponieważ siedzę po uszy w dotnecie, zacząłem przyglądać się niektórym nazwom bibliotej dotnetowych i zauważyłem m.in. wzorzec “n”. Podobnie dużo bibliotek w Javie ma w nazwie “j”. Zebrałem więc kilka ciekawych n-bibliotek...
W poprzednim wpisie na temat Xamarina, zrobiłem małe wprowadzenie teoretyczne do tej technologii. Przedstawiłem podstawowe założenia oraz dostępne warianty użycia tego rozwiązania. Jeśli uważasz, że wybór technologii jaką jest Xamarin był sam w sobie trudną decyzję, to mam niestety złą wiadomość. Już na starcie trzeba podjąć kolejną i to równie ważną. Którego podejścia użyć - Forms czy Native? W poprzednim poście przedstawiłem podstawowe założenia obu z nich. W wielkim skrócie - Forms zapewnią większą ...
Mobile development 2493 dni, 14 godzin, 25 minut temu 145 źrodło rozwiń