Chciałem Wam dzisiaj przedstawić fajną bibliotekę dla .net opartą na wkhtmltopdf do generowania dokumentów PDF z kodu HTML. Bardzo długo szukałem optymalnego dla mnie rozwiązania, aż w końcu trafiłem właśnie na Rotativę. Próbowałem wielu rozwiązań, ale każde miało swoje wady. Długi czas próbowałem walczyć z iTextSharp, ale składnia dokumentu PDF była mocno odpychająca, a licencja nie była zachęcająca. Później trafiłem właśnie na wkhtmltopdf, ale i ta biblioteka miała dwie zasadnicze wady, które mnie znie...
Fajną sprawą jest wstawić link dla elementów w autocomplete np. jeżeli wykorzystuje się je w wyszukiwarce.
Everyone who has ever tried to create multilingual application knows, that this is very tedious task. The most repetitive work is usually moving hard-coded strings to resource files. Fortunately with Resharper this is definitelly less painfull than usuall. In order to point out localizable parts of application , it is necessary to decorate classes with System.ComponentModel.LocalizableAttribute. However, usually we want to localize an entire program, so more universal solution is to set appropria...
Czasami mam takie dni, że mam dość. Wszystko się sypie a ja sam nie wiem w co włożyć ręce (szczególnie jak przestaje działać coś na czym polegam od dłuższego czasu i coś co do tej pory nie sprawiało mi żadnych problemów). Pewnego pięknego poniedziałkowego ranka przychodzę do pracy i od progu słyszę, że po tym jak w piątek zrobiłem pusha to kod przestał się kompilować. Wprost “uwielbiam” takie rozpoczęcie tygodnia. Oczywiście jestem przekonany, że kod działa, ale jestem przecież tylko człowiekiem...
Extension is available for other Visual Studio versions: GoToTest macro for VisualStudio 2008NavigateToTest VS2010 extensionNavigateToTest VS2012 extensionNavigateToTest VS2013 extension You can download the extension here: NavigateToTest Visual Studio 2013 extension Here’s the latest version that supports Visual Studio 2013. Extension is convention based. It matches ClassName file with ClassNameTest or ClassNameTests and vice-versa, so you can easily navigate to the test file and back. Here are so...
W Visual Studio istnieje pewna opcja, która umożliwia sprawdzenie wartości obiektu, do którego nie ma się jawnej referencji. Spójrzmy na następujący przykład:class Program { staticvoid Main(string[] args) { DoSomething(); } privatestaticvoid DoSomething() { var person=new Person(); person.FirstName ="Piotr"; person.LastName ="Zielinski"; } } Jeśli ustawimy breakpoint w metodzie DoSomething naturalnie zobaczymy wartość obiektu person w oknie watch:...
Recently I step upon an issue of compiling a project using Mono. Mono itself comes with nice tool called xbuild which is a msbuild brother in Mono world. Xbuild can be used to compile a project from command line. I wanted to compile my project targeting Mono under Visual Studio 2012. Unfortunately, targeting for Mono (profile=Mono) does not exists in Visual Studio. Following instructions will add new profile and then new target – Mono – will be available.Downloa...
W następnym poście mam zamiar napisać o SpecsFor, kolejnym framework’u ułatwiającym pisanie testów BDD. Najpierw jednak chciałbym przedstawić expectedObjects oraz Should Assertion Library, które są składowymi SpecsFlow. Wszystkie z wymienionych bibliotek można zainstalować przez NuGet. Should Assertion Library to mała biblioteka ułatwiająca asercje danych. W standardowych unit testach zwykle piszemy coś w stylu:Assert.IsTrue(value); Assert.IsNull(value); Assert.AreEqual(actualValue,expectedValue) Jes...
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...
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...
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
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...
Poprzednio opisałem do czego służy grunt i jak go zainstalować. Jednak zakończyłem na jednej z najważniejszych rzeczy w grunt – mianowicie pliku który jest odpowiedzialny za definicje zadań jak i konfiguracje tego co ma nam ten biedny grunt robić :) Niestety, z grunt nie jest tak łatwo jak z NPM – by stworzyć gruntfile.js lub gruntfile.coffee mamy dwie opcje:Ręczne utworzenie plikuWykorzystanie kolejnej paczki (kiedyś była częścią grunt) grunt-init Ręcznie możemy to zrobić za pomocą poleceńtouch gruntf...
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...
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.
W VS 2013 usprawniono debugowanie kodu asynchronicznego. Wszyscy jesteśmy przyzwyczajeni już do async\await. Znacząco to ułatwia wykonywanie operacji asynchronicznych. Niestety, debugowanie w VS 2012 jest dość uciążliwe. Załóżmy, że mamy kod z wieloma metodami asynchronicznymi, które z kolei są pozagnieżdżane. W przypadku wyrzucenia wyjątku lub ustawienia breakpoint’a, call stack nie zawierał żadnych informacji. Przetestujmy opisany problem na następującym kodzie:publicpartialclass MainWindow : Window {...
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...
Chyba każdemu, kto pracował przez dłuższy czas z Resharperem, trudno sobie wyobrazić pracę bez tego dodatku do Visual Studio. Resharper ma wiele świetnych funkcji lecz dzisiaj chciałem podzielić się informacją o jednej z ostatnich jakie odkryłem...
One of the greatest features of Resharper are Live Templates. They can speed up your code typing and help you focus only on what is most important (you don’t need to remember and retype anymore long ‘dull’ code constructions). Live Templates are similar to Visual Studio code snippets but are easier to define and introduce smart parameters that help you in faster code completion.
Jeśli zdarza się nam pracować z plikami .xaml i korzystamy z dobrobytu jakim jest bindowanie kod-widok (niezależnie od tego czy będzie to MVVM czy code behind), po pewnym czasie nadchodzi moment, gdy szlag nas trafia i musimy napisać po raz kolejny zamiast prostego ładnego property...