“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.
Sztuka programowania 4261 dni, 2 godziny, 7 minut temu 225 źrodło rozwiń
Właśnie został opublikowany kolejny mój artykuł, tym razem o GC. Zapraszam do lektury: http://msdn.microsoft.com/pl-pl/library/garbage-collector-cz-1
Sztuka programowania 4263 dni, 6 godzin, 42 minuty temu 218 źrodło rozwiń
Już od jakiegoś czasu nie "postowałem" na moim blogu... Na usprawiedliwienie napiszę, że po godzinach pracuję obecnie nad własnym czytnikiem RSS online (wiadomo, google reader niebawem zniknie, a jak na razie nic innego nie przypadło mi do gustu, tak że postanowiłem stworzyć coś własnego... zobaczymy co z tego wyjdzie...). W każdym bądź razie czas nadrobić zaległości, a prace nad czytnikiem również potrafią dostarczyć trochę tematów do opisania ;) Jednym z nich tytułowy problem sprawdzania jakości wprowa...
Chwytliwy tytuł, nie ma co, no nie?:) Dobra wiadomość jest taka, że jest on po części prawdziwy! Co prawda nie ma jeszcze sposobu na wpięcie R# w Sublime Text czy dodanie nawigacji R# do notatnika (heh, to by było coś!), ale część funkcjonalności tego doskonałego narzędzia wreszcie będzie można użyć poza Visualem (co mnie raduje niezmiernie). W nowej wersji R# poza VS można wyciągnąć statyczną analizę kodu, wpinając ją np. proces...
Opublikowano Nie zdążyłem dotrzeć przed oblicze komputera na czas aby obejrzeć JetBrainsowy webinar z Johnem Skeetem Big thanks to @jonskeet for the Webinar (and the private class named var). Thank you to everyone that attending. Recording available soon. — JetBrains ReSharper (@resharper) …no właśnie, zaintrygowało mnie “private class named var” Napisałem taki kawałek kodu: public class VarHacking{ private class var{ public string Message { get; set; } } public v...
Sztuka programowania 4263 dni, 6 godzin, 42 minuty temu 238 źrodło rozwiń
Co to jest pingback? Jest to rodzaj notyfikacji dotyczącej umieszczenia linku do danego źródła w tekście. Notyfikację tę my możemy zarówno wysłać jak i otrzymać. Dziś napiszę jak my możemy odebrać taki pingback i co musi zostać spełnione, zaś następnym razem opisze sposób wysyłania takiej notyfikacji. To co będziemy potrzebować (choć nie jest to konieczne) to biblioteka XML-RPC.NET – ułatwi nam ona znacząco implementację – gdyż komunikacja odbywa się poprzez XML-RPC, oczywiście dla hardcorów istni...
From few days I’m official member of codeguru redaction. I have hope the cooperation will be delightful. But now time is for rebellion!
Jeśli jest źle, i wiadomo że jest źle, to jest dobrze. Bo może być tylko lepiej. I czas na zmiany. Najważniejsze, aby być zadowolonym z siebie. Czerpać radość i satysfakcję z codziennych obowiązków i nie czuć się “gorszym” względem otoczenia. Wykorzystywać ogromne możliwości rzucane przez naszą profesję. Kilka lat temu miałem niemały kryzys odnośnie swojej roli w z...
W .NET do synchronizacji dostępnych jest wiele mechanizmów. W dzisiejszym wpisie chciałbym przedstawić różnice między semaforem a muteksem. Na pierwszy rzut oka, wyglądają one identycznie. Przykład:class Program { staticvoid Main(string[] args) { Mutex mutex =new Mutex(); mutex.WaitOne(); Console.WriteLine("Sekcja krytyczna tutaj"); mutex.ReleaseMutex(); Semaphore semaphore=new Semaphore(1,1); semaphore.WaitOne(); Console.WriteLine("Sekcja krytyczn...
Sztuka programowania 4265 dni, 9 godzin, 2 minuty temu 198 źrodło rozwiń
O klasie ManualResetEvent pisałem na blogu już wielokrotnie. Prosty przykład:internalstaticclass Sample { privatestaticreadonly ManualResetEvent _manualEvent=new ManualResetEvent(false); publicstaticvoid Main() { Task.Factory.StartNew(Run); _manualEvent.WaitOne(); Console.WriteLine("Exiting..."); } privatestaticvoid Run() { Thread.Sleep(1000); Console.WriteLine("Run"); _manualEvent.Set(); } } Zastosowanie ManualResetEvent oraz AutoResetE...
Sztuka programowania 4267 dni, 9 godzin, 54 minuty temu 125 źrodło rozwiń
Opublikowano Wiadomość z ostatnie chwili, dosłownie jeszcze gorąca – prosto z Redmond. Właśnie wyszedł Update 2 dla Visual Studio 2012. Zmiany zaszły w 4 głównych obszarach: Agile planing – teraz wszystko musi być agile więc poprawili TFS-a w tym zakresie – co dokładnie to nie sprawdzałem bo nie mam już przyjemności pracy z TFS-em Jakość – czyli zmiany w Test Managerze, code coverage, asp.net manual testing, “significant” polepszenia w zakresie testowania dla SharePointa Windows Store dev – tutaj ...
Wielowątkowość jest bardzo skomplikowanym tematem. W celu napisania prostego kodu wystarczy znać naprawdę niewiele konstrukcji. Sytuacja znaczącą komplikuje się gdy mamy wysokie wymagania odnoście pamięci czy CPU. RegisterWaitForSingleObject jest metodą dość mało popularną a przydatną gdy chcemy oszczędzić trochę pamięci.Wyobraźmy sobie, że mamy kod, który chcemy wykonać wyłącznie w momencie zasygnalizowania przez WaitHandle (AutoResetEvent, Semafor itp.). Jeśli operacja wewnątrz zajmuje trochę czasu w...
Sztuka programowania 4269 dni, 7 godzin, 35 minut temu 121 źrodło rozwiń
Miałem ostatnio okazję implementować własny provider claimów do SharePointa. Jak prawie całe API SharePointa, ta kupa kupy woła o pomstę do nieba. Postanowiłem wykorzystać okazję i zaprezentować jak to złe API mogłoby wyglądać, gdyby ktoś w teamie odpowiedzialnym za “dev-experience” tego kolosa miał trochę oleju w głowie. Ale najpierw kilka słów wprowadzenia, czyli przedstawienie problemu.
Prosty wzorzec, jak tworzyć kontekst aplikacji z obiektami ładującymi się tylko w razie potrzeby.
Sztuka programowania 4271 dni, 9 godzin, 7 minut temu 297 źrodło rozwiń
.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.
Sztuka programowania 4271 dni, 9 godzin, 7 minut temu 130 źrodło rozwiń
This post will be a little note with steps needed to setup a working CouchDb instance on windows machine.NoSql RDBSM rules the world, it is still a “standard” in the industry. My first Database was used inside a simple rss client written in C. This was the weird world of C programming with weak documentation and Segmentation fault errors everywhere. Now, I am mostly using MSSQL with ORM support ( NHibernate ), but there is another world of databases on the horizon, NoSql movement. There have been a lot...
Bazy danych i XML 4271 dni, 9 godzin, 7 minut temu 87 źrodło rozwiń
Writing mappings for models in large application is quite boring task. Fortunatelly, Fluent NHibernate provides possibility for automatic mapping creation - so called automappings.
Na temat walidacji formularzy w ASP.NET MVC napisałem już w przeszłości kilka postów. Jako, że ostatnio pracuję po godzinach nad pewnym swoim projektem (jeśli starczy mi zapału i doprowadzę go do końca to na pewno się pochwalę), znów natknąłem się na pewien problem związany właśnie z walidacją. Rozwiązanie jest w sumie banalne ale może komuś się przyda ;) Myślę, że najlepiej będzie rozpocząć od przedstawienia problemu, zacznijmy więc!Opis problemu Czasem tworząc skomplikowany widok, mamy potrzebę zawrze...
Git jest git jak mawia Spartakus Maciej jednak nie każdemu dane jest dostąpić do tego świętego Grala bo sporo firm używa np svn-a. Sam jestem w takiej sytuacji, że wewnątrz firmy obowiązuje jedyny słuszny svn i nikt nie ma zamiaru zmieniać tego dla jednego marudzącego kolesia. W takiej sytuacji trzeba sobie radzić samemu. Git ma wbudowanego klienta svn-a i nic ale to zupełnie nic nie stoi na przeszkodzie, aby korzystać z niego jako klienta svn. Do wykonania git-> svn potrzebujemy instalk...
W ostatnich postach przedstawiałem różne scenariusze użycia PLINQ. Ze względu na zrównoleglenie przetwarzania, kolejność na wyjściu nie zawsze będzie taka sama. Najlepiej to rozważyć na przykładzie:int[] numbers = Enumerable.Range(1, 50).ToArray(); foreach(int number in numbers.AsParallel().Where(n=>n>2)) { Console.WriteLine(number); } W scenariuszu sekwencyjnym, spodziewalibyśmy się liczb z zakresu 3-50. Skoro sekwencja wejściowa ma uporządkowane liczby od 1-50 to po wykonaniu zapytania oczekujemy p...
Sztuka programowania 4278 dni, 9 godzin, 47 minut temu 119 źrodło rozwiń