Archiwum

Archiwum / 2013
  • Bootstrap 3 + LESS + ASP.NET MVC 4 = bootlessmvc

    21.11.2013

    Ostatnio podczas testowania nowych możliwości biblioteki Bootstrap 3 w ASP.NET MVC natrafiłem na ciekawy wpis Toma DuPont traktujący o tym jak pogodzić ze sobą ASP.NET MVC 4 oraz Bootstrap 3.x (w formacie LESS CSS). O ile sama idea, która stoi za LESS CSS jest bardzo ciekawa (wprowadzenie do CSS zmiennych, funkcji, operacji i mixins) to implementacja w formie biblioteki JS uruchamianej po stronie klienta już mnie tak bardzo nie kręci.

    Czytaj więcej...
  • Quartz.NET, ASP.NET MVC i łatwa edycja wyrażeń cron przy użyciu jquery-cron.js

    19.11.2013

    Quartz.NET to biblioteka, tzw. scheduler służący do cyklicznego wykonywania zadań. Z grubsza rzecz ujmując, konfiguracja pracy Quartz.NET sprowadzania się do tworzeniu obiektów job/trigger w celu uruchomienia określonego zadania (kodu) w zaplanowanym czasie. Do dyspozycji mamy pojedyncze (SimpleTriggerImpl dla danego DateTime) oraz cykliczne uruchamianie zadań (CronTriggerImpl w oparciu o wyrażenia cron, ang. cron expressions). Wizualizacja DateTime nie jest wyzwaniem.

    Czytaj więcej...
  • NHibernate, Fluent NHibernate i FILESTREAM, czyli przechowywanie plików w bazie danych trochę inaczej

    30.07.2013

    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.

    Czytaj więcej...
  • Generowanie plików PDF z szablonów – czyli RazorEngine, wkhtmltopdf, JavaScript FTW!

    27.06.2013

    Generowanie plików PDF z poziomu kodu programu to temat rzeka. Wystarczy przejrzeć staka. Temat przewija się w prawie każdej tworzonej dzisiaj aplikacji. Zawsze znajdzie się ktoś komu trzeba wysłać fakturę, raport czy kilka wykresów w PDFie. Problem w tym, że narzędzia do generowania ładnych dokumentów PDF kosztują i to nie mało. Dodatkowym minusem jest fakt, ze większość tych bibliotek za kilka tysięcy baksów skupia się na konwersji do PDF bardziej niż na generacji PDFa na podstawie szablonu. Oprócz całej rzeszy komercyjnych bibliotek istnieją też rozwiązania open source, ale i tutaj nie jest łatwo coś wybrać.

    Czytaj więcej...
  • AnonymousObjectToHtmlAttributes, czyli sposób na “minus” w nazwach atrybutów HTML

    25.06.2013

    Co w tej metodzie takiego specjalnego? Nazwa metody mówi wszystko, no prawie wszystko. Metoda używana często i gęsto w kodzie HtmlHelper przy okazji tworzenia kontrolek TextBox, CheckBox, DropDown itd. Zamienia ona jeden z parametrów – htmlAttributes z obiektu anonimowego na RouteValueDictionary, pozwalając na dodanie własnych atrybutów HTML do tworzonej kontrolki. Dzięki anonimowemu obiektowi można uprościć wywołanie takiego TextBox i napisać coś takiego:

    Czytaj więcej...
  • ASP.NET MVC i Bootstrap RadioButton z enum

    24.06.2013

    Jeżeli korzystasz z Twitter Bootstrap  w ASP.NET MVC to najprawdopodobniej po kilku godzinach korzystania z tej świetnej biblioteki poczujesz nieodpartą potrzebę napisania kilku HtmlExtensions, aby choć trochę ułatwić sobie życie.

    Dobrym przykładem jest RadioButton, który w podstawowej wersji, dostępnej w ASP.NET MVC, “trochę” różni się od tego co oferuje nam Bootstrap. Napisałem HtmlExtensions do bootstrapowej wersji elementu jednocześnie dodając obsługę generowania z enuma. Takie radio na sterydach. 

    Czytaj więcej...
  • Masowa wysyłka maili przy użyciu SmtpClient

    13.04.2013

    “Masowa” i “SmtpClient” w jednym zdaniu? Nie, to nie jest żart. Każdy, kto choć raz musiał wysyłać serię maili z poziomu kodu C# pomyśli, że zwariowałem. Blokowanie wątku, cała gama wyjątków, które może rzucić metoda Send(), czy obsługa stanu aplikacji po takim błędzie. To ważniejsze atrakcje, jakie możemy napotkać korzystając z tej klasy. Jest na to jedna prosta metoda. Wróć. Właściwość… DeliveryMethod.

    Czytaj więcej...
  • Testy jednostkowe w .NET Micro Framework

    02.04.2013

    .NET Micro Framework to framework z rodziny .NET służący do oprogramowywania systemów typu embedded z ograniczonymi zasobami pamięci. Minimalne wymagania to 256 kB pamięci flash oraz 64 kB pamięci RAM. .NET Micro to taki młodszy brat .NET Framework z bardzo okrojonym BCL, WPF i WCF (wersja 4.x). Jeżeli programowałeś wcześniej w “pełnym dotnecie”, przesiadka na Micro może okazać się szokiem. Niby to ten sam C#, jednak braki w BCL (wynikające z ograniczeń platformy sprzętowej) szybko dają się we znaki. Rzeczy tak oczywiste jak generyki, StringBuilder (od 4.2), operacja na łańcuch znaków, tablicach, strumieniach, wyrażenia regularne (od 4.2) czy LINQ tutaj nie istnieją lub istnieją w bardzo okrojonej formie przypominając swoje “pełne” odpowiedniki praktycznie tylko z nazwy.

    Czytaj więcej...
  • Zrób to sam - NHibernate Profiler

    20.03.2013

    Średnio raz w miesiącu NHibernate doprowadza mnie do białej gorączki wyjątkiem: System.Transactions.TransactionAbortedException: The transaction has aborted. ---> System.Data.SqlTypes.SqlTypeException: SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM. Powodem powstania tego wyjątku jest niewypełnienie (lub błąd w definicji mapowania) właściwości DateTime obiektu biznesowego zapisywanego do bazy danych. Problem w tym, że treść tego komunikatu jest tak ogólna, że w przypadku pracy z domeną złożoną z więcej niż kilku obiektów namierzenie źródła problemu może potrwać… bardzo długo. Nie pomoże tutaj nawet Sql Profiler z Sql Server.

    Czytaj więcej...
  • NHibernate i serializacja drzewa obiektów przy użyciu biblioteki Json.NET

    07.03.2013

    Jeżeli korzystasz z NHibernate i Json.NET i chcesz bezpośrednio serializować obiekty biznesowe pobrane z bazy danych przy użyciu NHibernate do formatu JSON to bardzo szybko napotkasz na problem w postaci wyjątku - Error getting value from 'ReadOnly' on 'NHibernate.Proxy.DefaultLazyInitializer'. Problem ten powstaje w momencie gdy próbujesz serializować encję pobraną przez NHibernate, która posiada niezainicjowane wiązania z innymi encjami (obiekty proxy do obsługilazy loading). Klasa serializująca przemierza drzewo obiektów w poszukiwaniu publicznych właściwości obiektów. Po natrafieniu na proxy, nie umie go przetworzyć na JSON i rzucany jest wyjątek.

    Czytaj więcej...
  • Porządkowanie zdjęć

    13.02.2013

    Uwaga: ani słowa o programowaniu!

    Jeszcze pół roku temu, praktycznie na każdym moim dysku, można było znaleźć katalog photos z całą masą katalogów o dziwnych nazwach wewnątrz. Przykład kilku: 11.2010backup dellstary backupzdjęcia wakacje itp. itd. Jak można zauważyć, nie miałem zbyt dopracowanej strategii składowania swojego “dorobku artystycznego”. Moja taktyka była prosta: jak najszybciej (karta zawsze zapcha się w najmniej oczekiwanym momencie!) zgrać wszystko z aparatu na co najmniej dwa różne dyski, a “później” się to posprząta. “Poźniej” nastało po 5 latach i 3 komputerach. Na kilku dyskach miałem kilkadziesiąt GB zdjęć w różnych lokalizacjach i masę duplikatów. Nie wyglądało to ciekawie.

    Czytaj więcej...
  • IIS i Font Awesome

    12.02.2013

    Font Awesome to zestaw wektorowych ikon w postaci fontów. Około 250 popularnych, darmowych, w pełni skalowalnych ikon kontrolowanych z poziomu CSS. W paczce instalacyjnej dostępnej pod tym adresem dostarczone są podstawowe pliki z definicjami klas CSS, SASS, LESS oraz ikony w postaci fontów w formatach .eot, .svg, .ttf,, .woff i .otf. Instalacja FA jest prosta i polega na przegraniu zawartości pliku zip do katalogu w aplikacji  i dodaniu linków w nagłówku strony do dwóch plików CSS (opis tutaj). Niestety po zainstalowaniu zestawu w aplikacji ASP.NET/ASP.NET MVC na serwerze IIS otrzymamy błąd 404 przy próbie wykorzystania “fontów-ikon”. 

    Czytaj więcej...