Posty

Interesting uses of IDisposable

Everyone knows IDisposable interface, right? Right. It is simple. If you use unmanaged resources, you should implement IDisposable and release them when your object is being disposed. Simple. But IDisposable is a very special interface. It even has its own keyword: using. Example use:Code above is equal to:Constructor is called first, then we are doing something inside, and at the end Dispose method is called to finalize work. So maybe we could use IDisposable not only to clean up unmanaged resources, but as a shorter form of try / finally to put our code in specific context. That sounds like a great idea and obviously it is not mine. This idea was used in few places in .NET libraries. Here are 4 examples of IDisposable:First example. This is code from ASP.NET MVC to generate HTML form using Razor:Output of this code will be close to:What happens? Html.BeginForm() is a function that writes "<form>" to response and returns MvcForm type object. MvcForm type implements ID…

Angular 2 and AOT (ahead of time) compilation

Obraz
Today I managed to run AOT compilation in existing Angular 2 application.This is a note to remember what I had to do to make it work:Follow this example: https://medium.com/@laco0416/aot-compilation-with-webpack-359ac9f4916f#.a1v35vlylDowngrade Typescript to 2.0.10.Downgrade Webpack to 2.1.0-beta.28.Change all "template: require(path)" to "templateUrl: path". Require function is not available in AOT compilation process.Had to add angular2-typescript-loader to handle ts files in webpack (loaders: isProd ? '@ngtools/webpack' : ["awesome-typescript-loader", 'angular2-template-loader']). It handles templateUrl in components.Newest versions of libraries (ts 2.2 and webpack 2.2.0-rc.3) had documented issues with whole mechanism, so I had some fun searching for solutions.Performance before enabling AOT compilation: And after
Scripting took 3 seconds less and it is more than visible. Difference is huge. Scripts are now 600KB bigger, but they load on…

Simple replacement for AutoMapper

AutoMapper is great library, but it introduces another dependency and requires configuration. I try to stick to convention and use the same names in DTOs and domain objects. That is why I decided to write simple Object extension methods. Usage is simple: There are also some other useful functions:Not a big thing, but I copy this code from one project to another from time to time.And here is source code:

Presentation about Flexbox

This is my presentation about flexbox. If it doesn't look good in iframe, here is direct link.

O dzisiejszych wiadomościach

Dobra zmiana miała wprowadzić nową jakość, więc postanowiłem przyjrzeć się dokładnie dzisiejszym wiadomościom. Oto krótkie podsumowanie:

Na początku mamy zajawki. W pierwszej mowa o zatwierdzonym budżecie i wypowiedź Pana Kuczyńskiego "Minister finansów robił wszystko, aby móc wypełnić obietnice". Wyraźnie słychać, że to nie koniec zdania, ale zajawka się skończyła. Mozna pomyśleć, że minister finansów stara się jak może, ale w sumie nie wiem, bo to nie koniec zdania.

Potem kolejna zajawka z Kanclerz Merkel i komentarzem w tle "Walka o przetrwanie". Oglądamy nagranie, na którym jakaś Pani mówi "Słyszałam plotkę, że ma jechać do Chile". Najwyraźniej kanclerz Merkel jest w tak złej sytuacji, że została jej jedynie ucieczka z kraju. Podpowiadam, że w jednym z ostatnich sondaży partia Pani Merkel ma 32,5% poparcia i wygrywa wybory. Źródłem tego sondażu jest wiadomość z portalu wPolityce, którego nie posądzałbym o sprzyjanie Kanclerz Merkel, wręcz …

Opinie na temat hostingu linuxpl.com

Od kilku lat korzystam z hostingu linuxpl.com i zdecydowałem, że czas wyrazić opinię na ten temat. Dla dwóch klientów używałem konta W1GB (około 50 zł na rok, strona + e-mail). Mam też dwa konta W5GB do developmentu i hostowania kilku mniejszych stron, oraz od niedawna konto WPRO, bo oferuje 100GB miejsca. Generalnie polecam, ale mam kilka spostrzeżeń, którymi chciałbym się podzielić:Kontakt z klientem - Odpowiadają na e-maile szybko i raczej są pomocni, chociaż mogliby być bardziej sympatyczni. Gdy PHPMyAdmin chodził wolno z jedną z moich baz, Pan z supportu znalazł przyczynę problemu (bardzo wolno działający widok). Na prośby o zmiany dotyczące konta (wyższy pakiet, włączenie funkcji) reagują szybko. Płatność idzie przez DOTPAY i zaraz po jej wykonaniu następuje reakcje ze strony providera.Uptime Robot pokazuje dostępność na poziomie 99.9% - 100%, więc jest nieźle. Kilkukrotnie doświadczyłem poważniejszych problemów, które trwały nawet kilka godzin, ale byłem w stanie z tym żyć. Nig…

Validation using ASP.NET MVC + Kendo UI + jquery validate unobtrusive

I write one of my project in ASP.NET MVC with Kendo UI. I am using data annotations to emit client side validation rules. jquery.validate.unobtrusive.js picks them up and converts them into jquery validate rules. It works great for standard html inputs, but when inputs are wrapped with Kendo UI, input-validation-error class is assigned to wrong element. I was looking for solution to this problem, but didn't find really complete answer. Here is mine. First we have to adjust jquery validate to highlight appropriate elements in DOM: (function () { //This function checks if validated input is part of Kendo input and if it is, //it returns related Kendo element. Otherwise it returns itself. var findKendoElement = function (element) { //Pickers and numerics are built differently by Kendo, so we have to check. var parent = (element.parent().hasClass('k-picker-wrap') || element.parent().hasClass('k-numeric-wrap')) ? …