<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>MD Tech Blog</title>
    <description>Przygoda z IT</description>
    <link>
    https://www.md-techblog.net.pl</link>
    
      
      <item>
        <title>Kryptowaluty</title>
        
          <description>&lt;p&gt;W ostatnich latach coraz więcej słyszymy o “krypto” i “blockchain”, a nawet o “NFT”. Nie jestem specjalistą od spraw ekonomii, a technologicznie w rozproszonych bazach danych też nie siedzę, ale postanowiłem napisać ten post żeby zebrać do kupy to co wiem na ten moment. Będę próbował ugryźć temat z kilku stron, ale nie będę udawał bezstronności - uważam, że forma w jakiej obecnie działają kryptowaluty jest niezdrowa.&lt;/p&gt;

</description>
        
        <pubDate>Sun, 20 Mar 2022 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2022/03/kryptowaluty/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2022/03/kryptowaluty/</guid>
      </item>
      
    
      
      <item>
        <title>Szybki server NuGet w lokalnej sieci</title>
        
          <description>&lt;p&gt;Kiedy pracujemy nad nieco bardziej złożonymi bibliotekami, które będziemy rozprowadzać w postaci paczek NuGet to warto je również w tej postaci konsumować lokalnie. W przypadku pojedyńczej maszyny wystarczy wyznaczyć pewien folder i zarejestrować go jako źródło w pliku &lt;code class=&quot;highlighter-rouge&quot;&gt;nuget.config&lt;/code&gt;. W moim przypadku mam projekt, który muszę kompilować na Windowsie i chcę konsumować na maszynie z Linuxem, ale nie chcę kopiować paczek przez SMB. Wobec tego można pokusić się o lokalny server NuGet.&lt;/p&gt;

</description>
        
        <pubDate>Tue, 26 Oct 2021 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2021/10/local-nuget-server/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2021/10/local-nuget-server/</guid>
      </item>
      
    
      
      <item>
        <title>Maszyny stanów i łańcuchy Markova</title>
        
          <description>&lt;p&gt;W zeszłym tygodniu wpadłem na pytanie: jak się w praktyce implementuje maszyny stanu?
Szczególnie interesowało mnie podejście w tworzeniu gier.
Ku mojemu zdziwieniu i udręce, kod który zobaczyłem w tutorialach na YouTubie był
słaby, bo był bardzo mocno powiązany z innymi częściami systemu piszącego.
Dlatego postanowiłem chwilę poeksperymentować i teraz zaprezentować moje podejście.&lt;/p&gt;
</description>
        
        <pubDate>Tue, 12 May 2020 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2020/05/state-machine/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2020/05/state-machine/</guid>
      </item>
      
    
      
      <item>
        <title>Algebraiczne typy w C#</title>
        
          <description>&lt;p&gt;Konkretnie – mamy dwa rodzaje typów algebraicznych danych, które nas interesują: produkty i sumy.
Produkty mamy w C# za darmo poprzez wymienienie kilku pól (lub własności) w klasie.
Za to z sumami jest trochę ciężej, ale da się!&lt;/p&gt;
</description>
        
        <pubDate>Wed, 06 May 2020 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2020/05/cs-sums/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2020/05/cs-sums/</guid>
      </item>
      
    
      
      <item>
        <title>Leniwy .NET</title>
        
          <description>&lt;p&gt;Półtora roku temu zadałem sobie po raz pierwszy pytanie „Czy można uruchomić program napisany w Haskellu na platformie .NET?” Sens takiego przedsięwzięcia jest taki, że programista .NET może korzystać w pewnym stopniu ze znanych mu bibliotek, jednocześnie korzystając z dobrodziejstw czystego programowania funkcyjnego. Ten post jest podstawą do poniższej prezentacji:&lt;/p&gt;

&lt;center&gt;
    &lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/CFDA2p6Cpkg&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/center&gt;

</description>
        
        <pubDate>Tue, 14 Apr 2020 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2020/04/lazy-dotnet/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2020/04/lazy-dotnet/</guid>
      </item>
      
    
      
      <item>
        <title>Wideo i protokół NDI</title>
        
          <description>&lt;p&gt;Firma NewTek opracowała protokół NDI (&lt;a href=&quot;https://ndi.tv/about-ndi/&quot;&gt;Network Device Interface&lt;/a&gt;), którego celem jest przesyłanie obrazu i audio po sieci, głównie lokalnej. Co możemy z nim zrobić?&lt;/p&gt;
</description>
        
        <pubDate>Tue, 07 Apr 2020 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2020/04/ndi/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2020/04/ndi/</guid>
      </item>
      
    
      
      <item>
        <title>Wskaźniki do funkcji w C#</title>
        
          <description>&lt;p&gt;Od początku semestru robiłem małe kroczki w stronę mojej pracy magisterskiej, ale dopiero po zakończeniu semestru ostro wziąłem się do pracy. Próbuję skompilować Haskell na .NET, tak żeby działał efektywnie. Oznacza to wyciskanie tyle ile się da z dostępnego środowiska.&lt;/p&gt;

&lt;p&gt;W tym poście opowiem nieco o kompilowaniu aplikacji dotnetowych do kodu maszynowego, jak tworzenie delegatu spowalnia program i o modyfikowaniu kompilatora C#.&lt;/p&gt;
</description>
        
        <pubDate>Wed, 05 Feb 2020 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2020/02/dotnet-function-pointer/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2020/02/dotnet-function-pointer/</guid>
      </item>
      
    
      
      <item>
        <title>Wywiad na produkcji</title>
        
          <description>&lt;p&gt;SPAM - tak nazwałbym dużą część maili, która trafia do mojej skrzynki pocztowej. Jednak to nie ten typ spamu, który jest odfiltrowywany za moimi plecami przez GMail. Mówię o wszelakiej maści newsletterach, na które się zapisałem, mając nadzieję, że kiedyś jak będę potrzebował to je przeczytam.&lt;/p&gt;
</description>
        
        <pubDate>Tue, 10 Dec 2019 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2019/12/na-produkcji/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2019/12/na-produkcji/</guid>
      </item>
      
    
      
      <item>
        <title>Feed RSS podcastu</title>
        
          <description>&lt;p&gt;Tydzień temu pisałem o tym &lt;a href=&quot;/2019/11/jak-stworzyc-podcast/&quot;&gt;jak stworzyć podcast&lt;/a&gt; i zabrakło tam ważnej informacji odnośnie tego jak rozpisać plik RSS. Będę posługiwał się notacją dla silnika Jekyll.&lt;/p&gt;
</description>
        
        <pubDate>Tue, 03 Dec 2019 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2019/12/podcast-rss-feed/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2019/12/podcast-rss-feed/</guid>
      </item>
      
    
      
      <item>
        <title>Jak stworzyć swój własny podcast?</title>
        
          <description>&lt;p&gt;Właśnie rozpocząłem nagrywać podcast &lt;a href=&quot;//podobranocce.dziubiak.pl/&quot;&gt;„Po dobranocce z Marianem”&lt;/a&gt; i postanowiłem, że opiszę kroki jakie przedsięwziąłem aby tego dokonać. Ten post będzie rozszerzał to co napisałem dwa lata temu &lt;a href=&quot;/2017/07/wlasny-podcast/&quot;&gt;tworząc podcast Syreni Śpiew&lt;/a&gt;.&lt;/p&gt;

</description>
        
        <pubDate>Tue, 26 Nov 2019 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2019/11/jak-stworzyc-podcast/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2019/11/jak-stworzyc-podcast/</guid>
      </item>
      
    
      
      <item>
        <title>Skarpetki SSH</title>
        
          <description>&lt;p&gt;Od razu wyjaśnię ten tytuł - chodzi mi o protokół SOCKS, dzięki któremu możemy przekierować ruch sieciowy z przeglądarki internetowej przez serwer do którego mamy dostęp po SSH (i który pozwala na przekierowanie portów).&lt;/p&gt;
</description>
        
        <pubDate>Tue, 19 Nov 2019 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2019/11/skarpetki-ssh/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2019/11/skarpetki-ssh/</guid>
      </item>
      
    
      
      <item>
        <title>Funkcyjne komponenty React</title>
        
          <description>&lt;p&gt;W moim ostatnim poście przedstawiłem &lt;a href=&quot;/2019/08/podstawy-reacta&quot;&gt;podstawy Reacta&lt;/a&gt;, a dzisiaj pójdziemy krok dalej i przyjrzymy się jak rozdzielić logikę zmiany stanu komponentu od logiki renderowania, wykorzystując przy tym elementy programowania funkcyjnego.&lt;/p&gt;
</description>
        
        <pubDate>Tue, 10 Sep 2019 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2019/09/funkcyjne-komponenty/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2019/09/funkcyjne-komponenty/</guid>
      </item>
      
    
      
      <item>
        <title>Podstawy Reacta</title>
        
          <description>&lt;p&gt;W ciągu ostatnich dwóch tygodni miałem okazję zaznajomić się z biblioteką React. Jest to narzędzie do tworzenia UI dla aplikacji webowych za pomocą JavaScriptu. Ja będę używał akurat TypeScriptu, żeby moje programy były bardziej poprawne. W tym artykule chcę opisać podstawy Reacta i jego testowania.&lt;/p&gt;
</description>
        
        <pubDate>Tue, 27 Aug 2019 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2019/08/podstawy-reacta/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2019/08/podstawy-reacta/</guid>
      </item>
      
    
      
      <item>
        <title>Odnawianie Let's Encrypt bez wyłączania serwera</title>
        
          <description>&lt;p&gt;W październiku pisałem o tym &lt;a href=&quot;/2018/10/docker-compose-nginx-proxy/&quot;&gt;jak to postawiłem swój serwer WWW&lt;/a&gt; i użyłem Let’s Encrypt aby uzyskać certyfikat SSL. Minęło już pół roku, więc po raz drugi odnawiałem certyfikat i trochę zabolało mnie to zdanie:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Należy się jeszcze upewnić, że port 80 jest wolny (zatrzymać nasze proxy).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Nie chcę wyłączać mojej usługi na czas aktualizacji certyfikatu. Co więc mogę zrobić?&lt;/p&gt;
</description>
        
        <pubDate>Tue, 04 Jun 2019 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2019/06/letsencrypt-nginx-hack/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2019/06/letsencrypt-nginx-hack/</guid>
      </item>
      
    
      
      <item>
        <title>Leniwie czy gorliwie?</title>
        
          <description>&lt;p&gt;Co to znaczy, że język programowania jest leniwy? Jakie języki w ogóle mogą być leniwe? Poniżej odpowiem na te pytania, a także zrobię szybkie podsumowanie poprzedniego miesiąca.&lt;/p&gt;
</description>
        
        <pubDate>Tue, 14 May 2019 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2019/05/leniwe-gorliwe/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2019/05/leniwe-gorliwe/</guid>
      </item>
      
    
      
      <item>
        <title>Problem Boga vs P = NP</title>
        
          <description>&lt;p&gt;Zacząłem się pewnego razu zastanawiać, czy między nauką, a religią nie ma silnych powiązań, a konkretniej - czy można wyprowadzić pewne izomorfizmy między problemami z teizmu, a problemami z matematyki.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Ten post jest raczej satyryczny i filozoficzny niż merytoryczny. Zachęcam do czytania z przymrużeniem oka.&lt;/em&gt;&lt;/p&gt;
</description>
        
        <pubDate>Tue, 09 Apr 2019 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2019/04/bog-p-np/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2019/04/bog-p-np/</guid>
      </item>
      
    
      
      <item>
        <title>Marcowe prezentacje</title>
        
          <description>&lt;p&gt;Zaczął się kwiecień, studia mi lecą pełną parą. Cały czas coś jest do zrobienia, a w szczególności nagromadziły mi się prezentacje. Jako, że przegapiłem podsumowanie marca, to dorzucę szybko kilka zdań.&lt;/p&gt;

</description>
        
        <pubDate>Tue, 02 Apr 2019 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2019/04/marcowe-prezentacje/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2019/04/marcowe-prezentacje/</guid>
      </item>
      
    
      
      <item>
        <title>Curry - logika do twoich funkcji</title>
        
          <description>&lt;p&gt;Warto znać różne narzędzia programistyczne do rozwiązywania odpowiednich problemów. Czasem się zdarzy, że rozwiązanie danego problemu da się wyrazić w postaci zdań logicznych. Jednym z języków, które pozwalają na programowanie w logice jest Prolog. Aczkolwiek czasem chciałoby się coś więcej.&lt;/p&gt;

</description>
        
        <pubDate>Tue, 19 Mar 2019 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2019/03/curry/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2019/03/curry/</guid>
      </item>
      
    
      
      <item>
        <title>Kompilator - sprawdzanie powrotu</title>
        
          <description>&lt;p&gt;W językach imperatywnych rozróżniamy dwa rodzaje funkcji - takie, które zwracają wartość i takie, które nic nie zwracają (void). Chcielibyśmy się upewnić, że jeśli funkcja ma coś zwracać to zwraca wartość na każdej ścieżce wykonania.&lt;/p&gt;

</description>
        
        <pubDate>Tue, 12 Mar 2019 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2019/03/return-checking/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2019/03/return-checking/</guid>
      </item>
      
    
      
      <item>
        <title>Algorytm ma znaczenie</title>
        
          <description>&lt;p&gt;Często problem złożoności obliczeniowej można odłożyć na później. &lt;em&gt;Bo działa&lt;/em&gt;. Ale kiedy trafi się, że nasz algorytm będzie musiał przerobić większe ilości danych, to nagle to czy działa liniowo, kwadratowo, a może i sześciennie ma ogromne znaczenie i jest różnicą między otrzymaniem wyniku za 10 minut lub za 10 dni.&lt;/p&gt;

</description>
        
        <pubDate>Tue, 05 Mar 2019 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2019/03/algortmy/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2019/03/algortmy/</guid>
      </item>
      
    
      
      <item>
        <title>Podsumowanie lutego</title>
        
          <description>&lt;p&gt;Pół lutego miałem ferie, a potem zaczął się nowy semestr. Spójrzmy co dokładniej się działo.&lt;/p&gt;

</description>
        
        <pubDate>Thu, 28 Feb 2019 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2019/02/podsumowanie-lutego/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2019/02/podsumowanie-lutego/</guid>
      </item>
      
    
      
      <item>
        <title>Streamowanie z Lumix GH3</title>
        
          <description>&lt;p&gt;Dzisiejszy post jest super specyficzny do mojej sytuacji, ale może ktoś z niego skorzysta.&lt;/p&gt;

</description>
        
        <pubDate>Tue, 19 Feb 2019 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2019/02/lumix-gh3-stream/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2019/02/lumix-gh3-stream/</guid>
      </item>
      
    
      
      <item>
        <title>Kompilator - zwijanie stałych</title>
        
          <description>&lt;p&gt;Podczas kompilacji dochodzi do wielu optymalizacji. Jest wiele operacji, które można wykonać raz podczas kompilacji, zamiast podczas każdego wykonania programu. Poniżej opiszę zwijanie stałych i propagację stałych.&lt;/p&gt;

</description>
        
        <pubDate>Tue, 12 Feb 2019 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2019/02/zwijanie-stalych/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2019/02/zwijanie-stalych/</guid>
      </item>
      
    
      
      <item>
        <title>Kompilator - sprawdzanie typów</title>
        
          <description>&lt;p&gt;Są języki dynamicznie typowane i są języki statycznie typowane. Ja wyznaję wyższość języków ze statycznym typowaniem, ale są różne opinie. Dzisiaj spojrzymy na to jak wygląda sprawdzanie typów podczas kompilacji.&lt;/p&gt;

</description>
        
        <pubDate>Tue, 05 Feb 2019 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2019/02/sprawdzanie-typow/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2019/02/sprawdzanie-typow/</guid>
      </item>
      
    
      
      <item>
        <title>Podsumowanie stycznia</title>
        
          <description>&lt;p&gt;Postanowiłem robić posty podsumowujące co miesiąc, bo ciężko strasznie robić podsumowanie całego roku, kiedy nie pamięta się już dobrze tego co działo się na początku roku.&lt;/p&gt;

</description>
        
        <pubDate>Thu, 31 Jan 2019 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2019/01/podsumowanie-stycznia/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2019/01/podsumowanie-stycznia/</guid>
      </item>
      
    
      
      <item>
        <title>Kompilator - odsładzanie</title>
        
          <description>&lt;p&gt;Odsładzanie (z ang. desugaring) to proces przetwarzania abstrakcyjnego drzewa składni, do pewnej prostszej (logicznie) formy, który być może w kodzie zajmowałaby za dużo miejsca.&lt;/p&gt;
</description>
        
        <pubDate>Tue, 29 Jan 2019 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2019/01/desugaring/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2019/01/desugaring/</guid>
      </item>
      
    
      
      <item>
        <title>Dynamiczny DNS z CloudFlare</title>
        
          <description>&lt;p&gt;Ze względu na zmianę umowy internetowej, UPC wymieniło mi router, tym samym pozbywając mnie dzierżawy IPv4, a zamiast tego dostarczając dzierżawę IPv6, które potencjalnie będzie się co tydzień zmieniać. W obec tego nadszedł czas zabezpieczyć mój domowy serwer przed brakiem dostępu spowodowanym zmianą IP.&lt;/p&gt;

</description>
        
        <pubDate>Tue, 22 Jan 2019 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2019/01/dynamic-dns-cloudflare/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2019/01/dynamic-dns-cloudflare/</guid>
      </item>
      
    
      
      <item>
        <title>Kompilator od podstaw</title>
        
          <description>&lt;p&gt;Przez większość grudnia pisałem kompilator na studia w ramach przedmiotu Metody Realizacji Języków Programowania. Skoro czegoś się dowiedziałem, to stwierdziłem że opiszę nowo nabytą wiedzę na moim blogu.&lt;/p&gt;
</description>
        
        <pubDate>Tue, 15 Jan 2019 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2019/01/compiler-basics/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2019/01/compiler-basics/</guid>
      </item>
      
    
      
      <item>
        <title>Co produkuje .NET JIT?</title>
        
          <description>&lt;p&gt;Postanowiłem odpowiedzieć na pytanie jak wyglądają dane - wartości zmiennych - w kodzie produkowanym przez RyuJIT - system emitujący natywny kod (w moim przypadku x86_64) podczas działania aplikacji napisanej w C#.&lt;/p&gt;

</description>
        
        <pubDate>Tue, 08 Jan 2019 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2019/01/jit-dump/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2019/01/jit-dump/</guid>
      </item>
      
    
      
      <item>
        <title>Podsumowanie roku 2018</title>
        
          <description>&lt;p&gt;Kolejny rok dobiegł końca, a więc po raz kolejny czas przejrzeć tegoroczne posty i wydarzenia z mojego życia.&lt;/p&gt;

</description>
        
        <pubDate>Mon, 31 Dec 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/12/podsumowanie-2018/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/12/podsumowanie-2018/</guid>
      </item>
      
    
      
      <item>
        <title>Personal Branding</title>
        
          <description>&lt;p&gt;Temat tworzenia marki jest bardzo ciekawy. Marka (ang. brand) to nazwa i pewien zbiór cech z nią utożsamiany. W przypadku dużych firm, te które potrafią zbudować markę i zaistnieć w świadomości konsumentów, mają więcej klientów niż te, które są nieznane. A ten post będzie o marce personalnej, jaką każdy z nas może budować.&lt;/p&gt;

</description>
        
        <pubDate>Tue, 18 Dec 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/12/personal-branding/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/12/personal-branding/</guid>
      </item>
      
    
      
      <item>
        <title>UTF BOM jest okropne</title>
        
          <description>&lt;p&gt;Takie małe, a może sprawiać tyle problemów…&lt;/p&gt;

&lt;p&gt;BOM to trzy bajty &lt;code class=&quot;highlighter-rouge&quot;&gt;EF BB BF&lt;/code&gt; mające na celu ułatwienie otwierającemu plik tesktowy stwierdzenie, że jest to UTF-8.&lt;/p&gt;

</description>
        
        <pubDate>Tue, 04 Dec 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/12/bom-is-bad/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/12/bom-is-bad/</guid>
      </item>
      
    
      
      <item>
        <title>Dlaczego warto mieć bloga?</title>
        
          <description>&lt;p&gt;Są ludzie, którzy nie umieją pisać, inni się wstydzą, a jeszcze inni mówią, że nie mają czasu. Nie mniej jednak warto prowadzić bloga.&lt;/p&gt;

</description>
        
        <pubDate>Tue, 27 Nov 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/11/pisz-bloga/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/11/pisz-bloga/</guid>
      </item>
      
    
      
      <item>
        <title>Przekierowanie portów po SSH</title>
        
          <description>&lt;p&gt;W ostatnim poście pisałem o docker-compose i o tym jak to skonfigurowałem swój serwer. Żeby było bezpiecznie, to jedyne porty przychodzące jaki przechodzą przez router to &lt;code class=&quot;highlighter-rouge&quot;&gt;22&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;80&lt;/code&gt; i &lt;code class=&quot;highlighter-rouge&quot;&gt;443&lt;/code&gt;. Więc jak z zewnątrz połączyć się z portem dostępnym tylko lokalnie?&lt;/p&gt;
</description>
        
        <pubDate>Tue, 20 Nov 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/11/ssh-port-forwarding/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/11/ssh-port-forwarding/</guid>
      </item>
      
    
      
      <item>
        <title>Docker compose i proxy NGINX</title>
        
          <description>&lt;p&gt;W ciągu ostatnich kilku dni podjąłem się przeniesienia &lt;a href=&quot;https://github.com/manio143/PLQRefereeApp&quot;&gt;aplikacji portalu sędziów PLQ&lt;/a&gt; z hostingu &lt;a href=&quot;//sloppy.io&quot;&gt;sloppy.io&lt;/a&gt; na mój własny serwer ze względu na chęć obniżenia kosztów i zwiększenia dostępnych zasobów.&lt;/p&gt;

&lt;p&gt;W tym celu musiałem się zapoznać z systemem docker-compose i skonfigurować reverse proxy, bo w przyszłości na tym serwerze usiądzie więcej moich projektów.&lt;/p&gt;

</description>
        
        <pubDate>Wed, 17 Oct 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/10/docker-compose-nginx-proxy/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/10/docker-compose-nginx-proxy/</guid>
      </item>
      
    
      
      <item>
        <title>Nakładka na mecz Quidditcha</title>
        
          <description>&lt;p&gt;W kwietniu pisałem o tym jak &lt;a href=&quot;/2018/04/streaming-overlays/&quot;&gt;nagrałem prezentację na WDI&lt;/a&gt; w programie OBS i o możliwości wykorzystania go do tworzenia filmu z nakładką z wynikami nałożoną na mecz Quidditcha. Ostatnio w końcu zabrałem się za stworzenie takiego systemu nakładek.&lt;/p&gt;
</description>
        
        <pubDate>Tue, 09 Oct 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/10/quidditch-overlay/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/10/quidditch-overlay/</guid>
      </item>
      
    
      
      <item>
        <title>Uruchomienie WiFi na Ubuntu Server</title>
        
          <description>&lt;p&gt;Postanowiłem przeznaczyć zepsutego latopa na domowy serwer, ale jako że nie chcę bawić się w tonę kabli, to postanowiłem wykorzystać w nim WiFi. Okazuje się, że podłączenie do sieci bezprzewodowej z poziomu terminala nie jest takie super łatwe.&lt;/p&gt;
</description>
        
        <pubDate>Tue, 02 Oct 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/10/wifi-ubuntu-server/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/10/wifi-ubuntu-server/</guid>
      </item>
      
    
      
      <item>
        <title>Kaczuszka poznaje technologię</title>
        
          <description>&lt;p&gt;W sierpniu kupiłem nowy aparat i zacząłem rozwijać mój kanał na YouTubie, przez co programowanie odłożyłem trochę na bok. Poniżej cała historia.&lt;/p&gt;
</description>
        
        <pubDate>Tue, 28 Aug 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/08/kaczuszka/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/08/kaczuszka/</guid>
      </item>
      
    
      
      <item>
        <title>Typy wyższych rodzajów</title>
        
          <description>&lt;p&gt;Jednym z większych feature’ów w &lt;a href=&quot;/tags/Great%23/&quot;&gt;Great#&lt;/a&gt; mają być typy wyższych rodzajów - z angielskiego Higher Kinded Types (HKT). Poniżej przedstawiam co to i jak wyglądają różne podejścia do ich implementacji.&lt;/p&gt;
</description>
        
        <pubDate>Tue, 07 Aug 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/08/higher-kinded-types/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/08/higher-kinded-types/</guid>
      </item>
      
    
      
      <item>
        <title>Funkcyjnie znaczy czysto</title>
        
          <description>&lt;p&gt;Powiemy, że język funkcyjny jest czysty (ang. &lt;em&gt;pure&lt;/em&gt;) jeśli funkcje nie mogą mieć efektów ubocznych (zmiana stanu, wywołania systemowe), a jedyny sposób, żeby te efekty osiągnąć jest przez wykorzystanie monad. Planując architekturę języka &lt;a href=&quot;/tags/Great%23/&quot;&gt;Great#&lt;/a&gt; postanowiłem, że jego funkcyjna część będzie właśnie czysta.&lt;/p&gt;
</description>
        
        <pubDate>Tue, 31 Jul 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/07/pure/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/07/pure/</guid>
      </item>
      
    
      
      <item>
        <title>Duck typing i inferencja</title>
        
          <description>&lt;p&gt;Spędziłem cały dzień, a może nawet więcej, myśląc o tym jak rozwiązać problem dostarczenia jak najbardziej generycznego rozwiązania inferencji typów w &lt;a href=&quot;/tags/Great%23/&quot;&gt;Great#&lt;/a&gt;. Poniżej omawiam sytuację oraz plusy i minusy kilku rozwiązań.&lt;/p&gt;
</description>
        
        <pubDate>Tue, 24 Jul 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/07/duck-typing/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/07/duck-typing/</guid>
      </item>
      
    
      
      <item>
        <title>Próby ulepszenia C#</title>
        
          <description>&lt;p&gt;Planując semantykę &lt;a href=&quot;/tags/Great%23/&quot;&gt;Great#&lt;/a&gt; zacząłem szukać jak inni podeszli w swoich implementacjach do problemów z którymi się borykam. Na CLR zostało napisanych wiele języków. Poniżej kilka wartych poznania.&lt;/p&gt;
</description>
        
        <pubDate>Tue, 17 Jul 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/07/csharp-alternatives/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/07/csharp-alternatives/</guid>
      </item>
      
    
      
      <item>
        <title>Gramatyki czułe na wcięcia</title>
        
          <description>&lt;p&gt;&lt;a href=&quot;/2018/07/no-type-writing/&quot;&gt;Ostatnio&lt;/a&gt; wspomniałem o moim planie na stworzenie nowego języka programowania, który będzie “lepszym” C#/F#. Great# będzie językiem, w którym wcięcia są częścią gramatyki. Wobec tego potrzebuję narzędzia, aby taką gramatykę opisać i sparsować.&lt;/p&gt;
</description>
        
        <pubDate>Tue, 10 Jul 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/07/is-grammar/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/07/is-grammar/</guid>
      </item>
      
    
      
      <item>
        <title>Programowanie bez pisania typów</title>
        
          <description>&lt;p&gt;Języki takie jak Java, C#, czy C++ wymagają od użytkownika pisania dużej ilości typów. Adwokaci języków dynamicznych takich jak Python czy Ruby mówią, że mogą szybciej pisać i modyfikować programy nie działając na typach. Ja uważam, że dynamiczne języki pozwalają na masę błędów programisty, pozwalając mu pisać kod, który po uruchomieniu jest skazany na porażkę.&lt;/p&gt;
</description>
        
        <pubDate>Wed, 04 Jul 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/07/no-type-writing/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/07/no-type-writing/</guid>
      </item>
      
    
      
      <item>
        <title>Monady w F#</title>
        
          <description>&lt;p&gt;Podczas przygotowywania mojego &lt;a href=&quot;/2018/06/girlz-camp/&quot;&gt;warsztatu na GirlzCamp&lt;/a&gt; postanowiłem napisać sobie kilka monad w F#, w tym spróbować napisać transformator monad (co w ogólności mi się nie udało). Podczas moich zmagań natrafiłem na bibliotekę &lt;a href=&quot;https://fsprojects.github.io/FSharpPlus/&quot;&gt;FSharpPlus&lt;/a&gt;, która jest mega!!&lt;/p&gt;

</description>
        
        <pubDate>Tue, 19 Jun 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/06/monadic-fsharp/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/06/monadic-fsharp/</guid>
      </item>
      
    
      
      <item>
        <title>GirlzCamp 2018</title>
        
          <description>&lt;p&gt;W poprzedni weekend (2.06) odbyła się kolejna edycja warsztatów z programowania dla dziewczyn, organizowanych przez Microsoft Polska - GirlzCamp. &lt;a href=&quot;/2016/03/girlzcamp-2016-wrazenia/&quot;&gt;Dwa lata temu&lt;/a&gt; opowiadałem o ASP.NET, a tym razem zdecydowałem się na “Wprowadzenie do programowania funkcyjnego w F#”.&lt;/p&gt;

</description>
        
        <pubDate>Tue, 12 Jun 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/06/girlz-camp/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/06/girlz-camp/</guid>
      </item>
      
    
      
      <item>
        <title>Środowisko deweloperskie w kontenerze</title>
        
          <description>&lt;p&gt;Niedawno pomyślałem sobie jak to wdrażając drugą osobę w nowe środowisko do pracy z nową technologią możemy mieć problem. Zamiast wymagać od nich umiejętności instalacji X paczek, edycji plików konfiguracyjnych, etc. chcemy dać im środowisko, gdzie kod od razu będzie się kompilował. A jakby użyć do tego Docker?&lt;/p&gt;

</description>
        
        <pubDate>Tue, 05 Jun 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/06/docker-dev-env/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/06/docker-dev-env/</guid>
      </item>
      
    
      
      <item>
        <title>Technologiczne zacofanie</title>
        
          <description>&lt;p&gt;Ostatnio parę razy zderzyłem się z sytuacjami gdzie krótko mówiąc ludzie korzystają z komputera, nieumiejąc tego robić. Zdaję sobie sprawę, że sam jestem technologicznie zaawansowaną osobą i niektóre proste dla mnie rzeczy są de facto sztuczkami, o których wiedzą nieliczni. Jednakże przychodzi moment kiedy bez pomocy ludzie się zaczynają gubić.&lt;/p&gt;
</description>
        
        <pubDate>Tue, 29 May 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/05/techno-zacofanie/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/05/techno-zacofanie/</guid>
      </item>
      
    
      
      <item>
        <title>Interpreter mojego języka</title>
        
          <description>&lt;p&gt;Dzisiaj opublikowałem na GitHubie kod do interpretera &lt;a href=&quot;/2018/04/moj-jezyk-programowania&quot;&gt;mojego własnego języka programowania&lt;/a&gt;. Poniżej opiszę ogólny proces interpretacji pliku.&lt;/p&gt;

</description>
        
        <pubDate>Tue, 15 May 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/05/interpreter/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/05/interpreter/</guid>
      </item>
      
    
      
      <item>
        <title>Monada Stanu</title>
        
          <description>&lt;p&gt;Nie miałem w tym tygodniu czasu na opisanie kolejnej części &lt;a href=&quot;/2018/04/moj-jezyk-programowania/&quot;&gt;mojego interpretera&lt;/a&gt;, ponieważ go pisałem i napisałem już tak dużo, że w większości przypadków działa. Aby to uczcić w celach testowych napisałem w moim własnym języku monadę stanu, o której opowiem poniżej.&lt;/p&gt;

</description>
        
        <pubDate>Tue, 08 May 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/05/monada-stanu/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/05/monada-stanu/</guid>
      </item>
      
    
      
      <item>
        <title>Parsowanie kodu źródłowego</title>
        
          <description>&lt;p&gt;Kompilator lub interpreter przetwarza kod źródłowy w formie tekstu, aby wyprodukować kod wynikowy. Ponieważ program nie rozumie “po polsku” to język programowania musi mieć odpowiednią formę, która następnie posłuży do wygenerowania algorytmu, który ten plik tekstowy przekształci na inną formę, łatwo rozumialną przez maszynę, czyli zazwyczaj abstrakcyjne drzewo składni. Ten process przetwarszania tekstu nazywamy parsowaniem.&lt;/p&gt;

</description>
        
        <pubDate>Tue, 01 May 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/05/parsowanie-tekstu/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/05/parsowanie-tekstu/</guid>
      </item>
      
    
      
      <item>
        <title>Mój własny język programowania</title>
        
          <description>&lt;p&gt;Na Językach i Paradygmatach Programowania mamy duże zadanie zaliczeniowe - napisać interpreter do jakiegoś języka programowania. Postanowiłem skorzystać z okazji i zaprojektować swój własny język programowania, któremu nadałem nazwę Functional Script. Interpreter mamy napisać w Haskellu (&lt;a href=&quot;/2018/04/rozpoczynanie-haskell/&quot;&gt;jak zacząć pracę z Haskellem?&lt;/a&gt;). Poniżej możecie przeczytać opis mojego języka.&lt;/p&gt;

</description>
        
        <pubDate>Tue, 24 Apr 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/04/moj-jezyk-programowania/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/04/moj-jezyk-programowania/</guid>
      </item>
      
    
      
      <item>
        <title>Łączenie kilku dysków w Storage Pool</title>
        
          <description>&lt;p&gt;Czasem się zdarza, że zaczyna nam brakować miejsca na dysku. Mając pod ręką kilka starych dysków twardych o małych pojemnościach, możemy je połączyć w jedną dużą przestrzeń dyskową przy użyciu Storage Spaces w systemie Windows. Ja akurat nie miałem fizycznego dysku, więc poniższy opis zawiera również tworzenie dysków wirtualnych VHD.&lt;/p&gt;

</description>
        
        <pubDate>Tue, 17 Apr 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/04/storage-spaces/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/04/storage-spaces/</guid>
      </item>
      
    
      
      <item>
        <title>Nagrywanie prezentacji i streamów</title>
        
          <description>&lt;p&gt;Jakiś czas temu miałem rozkminę jak zrobić fajny streaming meczu Quidditcha, żeby na obraz z kamery nałożyć aktualne wyniki, kartki, itp. Z pomocą przyszło &lt;a href=&quot;https://obsproject.com&quot;&gt;OBS Studio&lt;/a&gt;. Ale można je również użyć do nagrania wykładanej prezentacji!&lt;/p&gt;

</description>
        
        <pubDate>Tue, 10 Apr 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/04/streaming-overlays/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/04/streaming-overlays/</guid>
      </item>
      
    
      
      <item>
        <title>Rozpoczynanie pracy z Haskellem</title>
        
          <description>&lt;p&gt;W tym semestrze zaczął mi sie nowy przedmiot - Języki i Pardygmaty Programowania, gdzie na początku uczymy się Haskella. Poniżej kilka zasobów, aby zacząć szybko w nim programować.&lt;/p&gt;
</description>
        
        <pubDate>Tue, 03 Apr 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/04/rozpoczynanie-haskell/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/04/rozpoczynanie-haskell/</guid>
      </item>
      
    
      
      <item>
        <title>Bezpieczeństwo twojej aplikacji webowej</title>
        
          <description>&lt;p&gt;Podczas Warszawskich Dni Informatyki 2018 miałem okazję poprowadzić warsztat-prezentację o bezpieczeństwie aplikacji webowych. Mój cel - zastraszyć słuchaczy, aby zawsze mieli z tyłu głowy, że trzeba pamiętać o zabezpieczeniach, już od początku pisania aplikacji, a nie na sam koniec, bo jest to bardzo poważna sprawa.&lt;/p&gt;

&lt;center&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/KvzkVTO94TQ?rel=0&quot; frameborder=&quot;0&quot; allow=&quot;autoplay; encrypted-media&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/center&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

</description>
        
        <pubDate>Wed, 28 Mar 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/03/bezpieczenstwo-webapp/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/03/bezpieczenstwo-webapp/</guid>
      </item>
      
    
      
      <item>
        <title>WannaCry</title>
        
          <description>&lt;p&gt;Na przedmiocie Bezpieczeństwo Systemów Komputerowych miałem bardzo ciekawe zadanie, które wykorzystywało atak na protokół RSA oraz nielosowe dobieranie klucza do szyfrowania symetrycznego. A celem było odzyskanie plików, które padły ofiarą spreparowanego ataku WannaCry.&lt;/p&gt;

</description>
        
        <pubDate>Tue, 20 Mar 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/03/wanna-cry/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/03/wanna-cry/</guid>
      </item>
      
    
      
      <item>
        <title>Łączenie plików PDF</title>
        
          <description>&lt;p&gt;Wielokrotnie zdarzyło mi się, że chciałem wydrukować coś na studia, ale nie chcąc marnować dużej ilości papieru chciałem umieścić kilka stron na jednej stronie. Albo po prostu chciałem połączyć ze sobą dwa pliki PDF. Poniżej opiszę jak to zrobić pod Linuxem.&lt;/p&gt;
</description>
        
        <pubDate>Tue, 13 Mar 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/03/pdf-joining/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/03/pdf-joining/</guid>
      </item>
      
    
      
      <item>
        <title>Linux podłączony do Active Directory?</title>
        
          <description>&lt;p&gt;Od niedawna zacząłem pracować z systemami opartymi o Microsoft Windows. I to nie po prostu pecetami, tylko systemami z siecią serwerów, tak jak to często bywa w firmach. Wtedy głównym źródłem danych logowania użytkowników jest domena Active Directory. Poniżej opiszę rewelacyjne narzędzie, do podłączenia maszyny Linuxowej do AD.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Przy okazji zerknij na &lt;a href=&quot;https://www.promise.pl/blog/integracja-linux-windows/&quot;&gt;mój post dla APN Promise&lt;/a&gt; na podobny temat.&lt;/em&gt;&lt;/p&gt;
</description>
        
        <pubDate>Tue, 06 Mar 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/03/linux-AD/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/03/linux-AD/</guid>
      </item>
      
    
      
      <item>
        <title>Dalsza przyszłość mojego bloga</title>
        
          <description>&lt;p&gt;Strasznie ciężko żyć z myślą, że nasze hobby stało się obowiązkiem. Przez ostatni miesiąc nie wypuściłem ani jednego posta, częściowo ze względu na studia i sesję, a częściowo ponieważ rozpocząłem tą serię &lt;em&gt;.NET Web&lt;/em&gt;. Z jakiegoś powodu nie chce mi się na razie jej kontynuować, ale za każdym razem kiedy myślami wracałem do bloga, dochodziłem do ściany “powinienem napisać kolejny post z tej serii” mimo, że mam inne tematy, które mogą się tu pojawić. I tak o to nic się nie pojawiało.&lt;/p&gt;

&lt;p&gt;Więc zmieniam teraz podejście. Moje posty często będą krótsze, z różniejszych dziedzin -&amp;gt; bezpieczeństwo, programowanie funkcyjne, Windows, Linux, .NET, inne języki, itd. No i nie będzie żadnych serii.&lt;/p&gt;
</description>
        
        <pubDate>Thu, 01 Mar 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/03/og%C5%82oszenie/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/03/og%C5%82oszenie/</guid>
      </item>
      
    
      
      <item>
        <title>.NET Web III - Parametry GET i POST</title>
        
          <description>&lt;p&gt;W komunikacji HTTP występują różne czasowniki. Najbardziej popularne to GET i POST. Dzisiaj dowiemy się jak odczytywać parametry tych zapytań w naszej akcji.&lt;/p&gt;

</description>
        
        <pubDate>Thu, 11 Jan 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/01/web-iii-get-post/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/01/web-iii-get-post/</guid>
      </item>
      
    
      
      <item>
        <title>.NET Web II - Filtrowanie requestów</title>
        
          <description>&lt;p&gt;Dzisiaj dowiemy się jak kierować zapytanie HTTP, żeby dotarło tam gdzie chcemy, czyli żeby obsłużył je właściwy kontroler. W tym celu dowiemy się jak działa Routing i filtrowanie zapytań GET/POST oraz tworzenie parametryzowanych ścieżek.&lt;/p&gt;

</description>
        
        <pubDate>Wed, 03 Jan 2018 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2018/01/web-ii-request-filtering/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2018/01/web-ii-request-filtering/</guid>
      </item>
      
    
      
      <item>
        <title>Podsumowanie 2017</title>
        
          <description>&lt;p&gt;Tak jak &lt;a href=&quot;/2016/12/podsumowanie-2016/&quot;&gt;rok temu&lt;/a&gt; postanowiłem napisać podsumowanie roku. Działo się wiele rzeczy i postaram się w skrócie je tutaj opisać.&lt;/p&gt;

</description>
        
        <pubDate>Sun, 31 Dec 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/12/podsumowanie-roku/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/12/podsumowanie-roku/</guid>
      </item>
      
    
      
      <item>
        <title>.NET Web I - Nowy projekt</title>
        
          <description>&lt;p&gt;Dziś dowiemy się jak zacząć tworzenie aplikacji webowej, tworząc nowy projekt, które będziemy potem modyfikowali.&lt;/p&gt;
</description>
        
        <pubDate>Thu, 28 Dec 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/12/web-i-new-project/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/12/web-i-new-project/</guid>
      </item>
      
    
      
      <item>
        <title>Podczas prezentacji wyciekło produkcyjne hasło</title>
        
          <description>&lt;p&gt;Podczas &lt;a href=&quot;/2017/12/dotnetconfpl/&quot;&gt;prezentacji na DotnetConfPL&lt;/a&gt; zabrakło mi demo podłączenia się do bazy danych. Zostało już mało czasu, a ja chciałem pokazać kawałek kodu, więc otworzyłem działający projekt. Wszystko fajnie, ale w F# z SQLProviderem trzeba wpisać hasło do bazy bezpośrednio w kodzie. Więc hasło do produkcyjnej bazy danych wyciekło mi niechcący na żywo.&lt;/p&gt;

</description>
        
        <pubDate>Sat, 23 Dec 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/12/wycieklo-haslo/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/12/wycieklo-haslo/</guid>
      </item>
      
    
      
      <item>
        <title>MVC .NET web - moja prezentacja na  DotnetConfPL</title>
        
          <description>&lt;p&gt;Tydzień temu miałem przyjemność wziąć udział jako prelegent w internetowej konferencji o tematyce dotnetowej &lt;a href=&quot;dotnetconf.pl&quot;&gt;DotnetConfPL&lt;/a&gt;. Poniżej możecie obejrzeć moją prezentację pod tytułem “Wzorzec projektowy MVC z porównaniem tworzenia aplikacji webowych w F# z Suave i w C# z ASP.NET”.&lt;/p&gt;

&lt;center&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/fiSBbTjymek?rel=0&quot; frameborder=&quot;0&quot; gesture=&quot;media&quot; allow=&quot;encrypted-media&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;center&gt;&lt;br /&gt;
&lt;/center&gt;&lt;/center&gt;
</description>
        
        <pubDate>Sat, 23 Dec 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/12/dotnetconfpl/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/12/dotnetconfpl/</guid>
      </item>
      
    
      
      <item>
        <title>Nagrywanie rozmów na Skypie</title>
        
          <description>&lt;p&gt;Odkąd zacząłem nagrywać &lt;a href=&quot;/2017/07/wlasny-podcast/&quot;&gt;podcast o Quidditchu&lt;/a&gt; miałem okazję przetestować różne warianty: nagrywanie wszystkich na żywo (osoby fizycznie koło siebie), rozmowa przez Skype’a, gdzie każdy nagrywa swój głos, albo nagrywam mój głos i zbiorczo głosy moich rozmówców. Dziś zaprezentuję rozwiązanie tego ostatniego.&lt;/p&gt;
</description>
        
        <pubDate>Mon, 11 Sep 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/09/nagrywanie-skype/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/09/nagrywanie-skype/</guid>
      </item>
      
    
      
      <item>
        <title>Darmowe oprogramowanie do edycji wideo</title>
        
          <description>&lt;p&gt;Ciężko mi opisać ile czasu i wysiłku włożyłem w szukanie dobrego edytora wideo, za który nie muszę płacić ogromnych pieniędzy. Szczególnie problematyczne jest znalezienie rozwiązania działającego pod Linuxem. Mówię tu o nieliniowych edytorach, które pozwalają na przynajmniej semi-profesjonalne edytowanie filmów.&lt;/p&gt;

&lt;p&gt;Ostatecznie udało mi się znaleźć trochę informacji o darmowych edytorach wideo, choć są one często “ukryte” (firmy się nie chwalą darmowymi wersjami). Poniżej prezentuję moje znaleziska.&lt;/p&gt;
</description>
        
        <pubDate>Mon, 28 Aug 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/08/edytory-wideo/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/08/edytory-wideo/</guid>
      </item>
      
    
      
      <item>
        <title>Tworzenie systemu sesji aplikacji webowej</title>
        
          <description>&lt;p&gt;Zacząłem ostatnio pracować nad aplikacją do certyfikowania sędziów dla &lt;a href=&quot;https://www.facebook.com/PolskaLigaQuidditcha&quot;&gt;Polskiej Ligi Quidditcha&lt;/a&gt;. Postanowiłem napisać ją w F# i Suave, mając na celu zrobić jak najlepszą robotę pod względem bezpieczeństwa.&lt;/p&gt;

&lt;p&gt;Suave ma zaimplementowany system obsługi sesji, ale nieco mi się on nie spodobał, jako że przesyła dane sesji do klienta (zaszyfrowane), a ja chciałbym trzymać wszystkie dane po stronie serwera.&lt;/p&gt;
</description>
        
        <pubDate>Mon, 14 Aug 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/08/tworzenie-systemu-sesji/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/08/tworzenie-systemu-sesji/</guid>
      </item>
      
    
      
      <item>
        <title>Masowe wysyłanie maili</title>
        
          <description>&lt;p&gt;Spotkaliście się kiedyś z problemem wysłania czegoś do dużej liczby osób, tak żeby nie zdradzać każdemu listy adresatów? Albo wysyłając maile, chcieliście zmienić treść dla każdej osoby (np. zacząć od “Cześć [Imię]”)?&lt;/p&gt;

&lt;p&gt;Ja też spotkałem się z tym problemem i poniżej opisuję po krótce, co miałem zrobić i jak to zrobiłem.&lt;/p&gt;
</description>
        
        <pubDate>Mon, 31 Jul 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/07/mass-mail/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/07/mass-mail/</guid>
      </item>
      
    
      
      <item>
        <title>Komentarze TODO</title>
        
          <description>&lt;p&gt;Istnieje pełno narzędzi do zarządzania zadaniami, są issues na GitHubie, ale kiedy chcemy zanotować szybko zadanie dotyczące kodu, nad którym akurat pracujemy to możemy użyć komentarza.&lt;/p&gt;
</description>
        
        <pubDate>Mon, 24 Jul 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/07/commentarze-todo/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/07/commentarze-todo/</guid>
      </item>
      
    
      
      <item>
        <title>Tworzenie własnego podcastu</title>
        
          <description>&lt;p&gt;Lubię strasznie słuchać podcastów, a o tym, których słucham &lt;a href=&quot;/2016/09/podcasty&quot;&gt;pisałem już wcześniej&lt;/a&gt;. Wzorując się na mistrzowskim &lt;a href=&quot;//dotnetrocks.com&quot;&gt;.NET Rocks!&lt;/a&gt;, który aż przyjemnie się słucha, postanowiłem, że chcę stworzyć swój własny podcast. Znajdziecie go pod adresem &lt;a href=&quot;http://podcast.warsawmermaids.pl&quot;&gt;podcast.warsawmermaids.pl&lt;/a&gt;&lt;/p&gt;
</description>
        
        <pubDate>Mon, 17 Jul 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/07/wlasny-podcast/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/07/wlasny-podcast/</guid>
      </item>
      
    
      
      <item>
        <title>Formatowanie kodu dotnetowego</title>
        
          <description>&lt;p&gt;Przyjemnie się pracuje z kodem gdy jest on czytelny. Między innymi oznacza to spójność formatowania. Istnieje wiele szkół i gorących debat na temat tego jak organizować pliki z kodem. Czy używamy spacji, czy tabulacji do robienia wcięć? Czy otwieramy klamry na końcu tej samej linii, czy w nowej?&lt;/p&gt;

&lt;p&gt;Do jakiegokolwiek wniosku nie dojdziemy, ważne jest aby w danym projekcie kod był spójny. W tym celu powstają narzędzia do formatowania kodu.&lt;/p&gt;
</description>
        
        <pubDate>Mon, 26 Jun 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/06/formatowanie-kodu/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/06/formatowanie-kodu/</guid>
      </item>
      
    
      
      <item>
        <title>Poprawianie historii</title>
        
          <description>&lt;p&gt;Czasem się zdarzy, że postanowicie upublicznić prywatne repo, ale znajdujecie w nim plik konfiguracyjny, w którym na sztywno wpisaliście swoje hasło, którego używacie też gdzieś indziej (o tym, że jest to problemem przeczytasz w &lt;a href=&quot;/2017/05/hasla/&quot;&gt;moim artykule o hasłach&lt;/a&gt;). Jak w miarę prosty sposób usunąć lub zmienić to hasło w historii?&lt;/p&gt;
</description>
        
        <pubDate>Mon, 05 Jun 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/06/poprawianie-historii/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/06/poprawianie-historii/</guid>
      </item>
      
    
      
      <item>
        <title>Moja nowa obsesja '.NET OS'</title>
        
          <description>&lt;p&gt;Bez pomysłów nie ma innowacji. Niektóre pomysły są lepsze, niektóre gorsze, jedne proste, inne skomplikowane i czasochłonne. Od jakiegoś czasu nachodzi mnie pomysł napisania systemu operacyjnego, który opisuję poniżej.&lt;/p&gt;
</description>
        
        <pubDate>Mon, 29 May 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/05/dotnet-os-idea/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/05/dotnet-os-idea/</guid>
      </item>
      
    
      
      <item>
        <title>Microsoft Build 2017</title>
        
          <description>&lt;p&gt;Miałem przyjemność polecieć do Stanów Zjednoczonych, do Seattle i wziąć udział w konferencji Microsoft Build. Jest to największa konferencja MS dla deweloperów, podczas której ogłaszają nowości, nad którymi pracują.&lt;/p&gt;

&lt;p&gt;Postanowiłem opisać całą moją przygodę oraz wybrane nowinki.&lt;/p&gt;
</description>
        
        <pubDate>Mon, 22 May 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/05/msbuild2017/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/05/msbuild2017/</guid>
      </item>
      
    
      
      <item>
        <title>Hasła</title>
        
          <description>&lt;p&gt;Każdy z nas używa haseł jako mechanizmu uwierzytelniania (logowania, “authentication”) na setkach portali internetowych. Dużo się mówi o tym, że hasło powinno być bezpieczne. Ale wiele ludzi, w tym ja do niedawna, nie przejmuje się takimi detalami…&lt;/p&gt;

&lt;p&gt;W tej historii opowiem wam jak w ciągu kilku godzin zmieniłem moje nastawienie do haseł i podam kilka rad jak być bezpieczniejszym w sieci.&lt;/p&gt;
</description>
        
        <pubDate>Sun, 07 May 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/05/hasla/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/05/hasla/</guid>
      </item>
      
    
      
      <item>
        <title>e-Deklaracje na Linuxie</title>
        
          <description>&lt;p&gt;Mój blog ostatnio świeci pustkami, nie mam czasu na rozwijanie mojego projektu &lt;a href=&quot;/2017/03/mars-buggy-dsp17/&quot;&gt;Mars-Buggy&lt;/a&gt; w ramach Daj Się Poznać, a dziś postanowiłem napisać instrukcję instalacji środowiska Adobe do złożenia zeznania podatkowego w systemie e-Deklaracji pod Linuxem.&lt;/p&gt;
</description>
        
        <pubDate>Thu, 27 Apr 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/04/pit-linux/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/04/pit-linux/</guid>
      </item>
      
    
      
      <item>
        <title>Wprowadzenie do assemblera x86_64 (2)</title>
        
          <description>&lt;p&gt;&lt;a href=&quot;/2017/03/wprowadzenie-x86-64/&quot;&gt;Tydzień temu&lt;/a&gt; zacząłem wprowadzenie do assemblera x86_64 i skończyłem opowiedziawszy o rejestrach, deklarowaniu zmiennych i operacjach arytmetycznych. Dziś przejdziemy przez kolejne instrukcje, a za tydzień napiszemy prosty kalkulator konsolowy.&lt;/p&gt;
</description>
        
        <pubDate>Fri, 07 Apr 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/04/wprowadzenie-x86-64-2/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/04/wprowadzenie-x86-64-2/</guid>
      </item>
      
    
      
      <item>
        <title>Wprowadzenie do assemblera x86_64</title>
        
          <description>&lt;p&gt;Na przedmiocie Systemy Operacyjne dostaliśmy zadania z assemblera z niewielką ilością informacji podanych na tacy. Jednak nie ma w internecie zbyt dużo materiałów związanych z programowaniem w assemblerze na poziomie wyższym niż bardzo podstawowym, także postanowiłem napisać coś samemu.&lt;/p&gt;
</description>
        
        <pubDate>Fri, 31 Mar 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/03/wprowadzenie-x86-64/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/03/wprowadzenie-x86-64/</guid>
      </item>
      
    
      
      <item>
        <title>Studencki Festiwal Informatyczny - wrażenia</title>
        
          <description>&lt;p&gt;Tydzień temu odbyło się duże wydarzenie w Krakowie - Studencki Festiwal Informatyczny. Jego rozmach można porównać do Warszawskich Dni Informatyki. Miałem okazję pojechać tam z prezentacją, a dziś postanowiłem opisać moje ogólne wrażenia.&lt;/p&gt;
</description>
        
        <pubDate>Thu, 23 Mar 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/03/sfi/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/03/sfi/</guid>
      </item>
      
    
      
      <item>
        <title>Przetwarzanie klawiatury w SadConsole</title>
        
          <description>&lt;p&gt;W &lt;a href=&quot;/2017/03/unikanie-cyklicznych/&quot;&gt;ostatnim poście&lt;/a&gt; mieliście szansę zobaczyć już jaką formę będzie miała moja funkcja przetwarzająca input z klawiatury. Teraz nieco wgłębimy się w temat.&lt;/p&gt;
</description>
        
        <pubDate>Mon, 20 Mar 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/03/sadconsole-keyboard/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/03/sadconsole-keyboard/</guid>
      </item>
      
    
      
      <item>
        <title>Unikanie cyklicznych zależności</title>
        
          <description>&lt;p&gt;Zależności określają, jak klasa lub moduł wykorzystuje inną klasę lub moduł. W zakresie globalnym biblioteki mają zależności, korzystając z funkcjonalności innych bibliotek. Tylko te zależności mogą się rozrosnąć i wprowadzić dodatkową złożoność w naszej aplikacji.&lt;/p&gt;

&lt;p&gt;W F# nie można tworzyć cyklicznych zależności ze względu na kolejność kompilacji kodu. Ale jak ich omijać podczas programowania?&lt;/p&gt;
</description>
        
        <pubDate>Wed, 15 Mar 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/03/unikanie-cyklicznych/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/03/unikanie-cyklicznych/</guid>
      </item>
      
    
      
      <item>
        <title>Sztuka wrappowania</title>
        
          <description>&lt;p&gt;Bardzo często pracując z cudzą biblioteką zetkniemy się z tym, że dane rozwiązanie jest szersze, bądź inaczej zrobione, niż to czego potrzebujemy. Dlatego warto napisać wrapper, czyli jakiś interfejs dostępu do funkcjonalności biblioteki, ale na naszych warunkach.&lt;/p&gt;
</description>
        
        <pubDate>Mon, 13 Mar 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/03/sztuka-wrappowania/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/03/sztuka-wrappowania/</guid>
      </item>
      
    
      
      <item>
        <title>Pierwsze kroki z SadConsole</title>
        
          <description>&lt;p&gt;Czas zacząć pracę na grą Mars-Buggy. Najpierw zobacz mój post &lt;a href=&quot;/2017/03/mars-buggy-dsp17/&quot;&gt;Mars-Buggy - Daj Się Poznać 2017&lt;/a&gt;. Moje posty będą miały nieco tutorialową formę, aby ułatwić mi samemu pracę z SadConsole w przyszłości.&lt;/p&gt;
</description>
        
        <pubDate>Wed, 08 Mar 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/03/sadconsole-pierwsze-kroki/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/03/sadconsole-pierwsze-kroki/</guid>
      </item>
      
    
      
      <item>
        <title>Mars-Buggy - DSP17</title>
        
          <description>&lt;p&gt;Nadeszła kolejna edycja konkursu &lt;a href=&quot;http://dajsiepoznac.pl&quot;&gt;Daj Się Poznać&lt;/a&gt; i mimo iż początkowo byłem niechętny, żeby się zarejestrować, to w końcu jednak to zrobiłem. Ten post będzie wprowadzeniem do mojego projektu: Mars-Buggy, prostej gry konsolowej, którą chcę napisać w F#.&lt;/p&gt;
</description>
        
        <pubDate>Mon, 06 Mar 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/03/mars-buggy-dsp17/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/03/mars-buggy-dsp17/</guid>
      </item>
      
    
      
      <item>
        <title>F# na Azurze</title>
        
          <description>&lt;p&gt;Azure jest świetną platformą chmurową, ma dużo opcji i dość sensowny panel administracyjny. Jego główną wadą jest cena, choć dla dużych firm nie będzie ona stanowiła problemu. Studenci zaś mogą skorzystać z darmowej oferty &lt;a href=&quot;https://imagine.microsoft.com/en-us/Catalog/Product/99&quot;&gt;Microsoft Azure for Students&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Jednak aby uruchomić moją aplikację F# + Suave na Azurze musiałem się nieco namęczyć.&lt;/p&gt;
</description>
        
        <pubDate>Mon, 27 Feb 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/02/fsharp-azure/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/02/fsharp-azure/</guid>
      </item>
      
    
      
      <item>
        <title>Złożoność obliczeniowa</title>
        
          <description>&lt;p&gt;W &lt;a href=&quot;/2017/02/analizowanie-so/&quot;&gt;ostatnim poście&lt;/a&gt; napisałem na końcu, że mój algorytm jest O(n^2). Co to właściwie oznacza?&lt;/p&gt;

&lt;p&gt;Problem złożoności obliczeniowej to pytanie “Jak długo mój algorytm będzie działał?”&lt;/p&gt;

&lt;p&gt;Najprostsza odpowiedź jest “To zależy”. Ale od czego?&lt;/p&gt;
</description>
        
        <pubDate>Wed, 22 Feb 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/02/zlozonosc-obliczeniowa/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/02/zlozonosc-obliczeniowa/</guid>
      </item>
      
    
      
      <item>
        <title>Analizowanie pytań na StackOverflow</title>
        
          <description>&lt;p&gt;Wpadłem ostatnio na pomysł, aby przeanalizować jakie pytania są najczęściej zadawane na &lt;a href=&quot;http://stackoverflow.com&quot;&gt;StackOverflow&lt;/a&gt;. Ponieważ wiele słyszałem, jaki to F# jest pomocny w analizowaniu danych, to postanowiłem napisać w nim skrypt, który mi pomoże.&lt;/p&gt;
</description>
        
        <pubDate>Wed, 15 Feb 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/02/analizowanie-so/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/02/analizowanie-so/</guid>
      </item>
      
    
      
      <item>
        <title>Monady i wyrażenia komputacyjne</title>
        
          <description>&lt;p&gt;W programowaniu funkcyjnym pracuje się czesto znacznie bliżej matematyki, a co za tym idzie pewne pojęcia brzmią bardzo skomplikowanie choć wcale takie być nie muszą. Dziś zobaczymy czym jest monada oraz jak F# ułatwia nam korzystanie z monad przez wyrażenia komputacyjne.&lt;/p&gt;
</description>
        
        <pubDate>Mon, 13 Feb 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/02/monads/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/02/monads/</guid>
      </item>
      
    
      
      <item>
        <title>Oh My Zsh</title>
        
          <description>&lt;p&gt;Odkąd zaczęła się moja przygoda z Linuxem pracowałem w Bashu, czyli Bourne again shell, czyli powłoce. Powłoka to program, który uruchamia się w terminalu. Powłoki dostarczają funkcje skryptowe oraz poruszanie się po systemie. Przykładem powłok pod Windowsem są CMD.EXE i Powershell.&lt;/p&gt;

&lt;p&gt;Niedawno jednak kolega namówił mnie żebym spróbował innej powłoki - Z shell, która wraz z dodatkiem &lt;a href=&quot;https://github.com/robbyrussell/oh-my-zsh/&quot;&gt;Oh My Zsh&lt;/a&gt; oraz odpowiednią “skórką” wspomaga pracę i upiększa terminal.&lt;/p&gt;
</description>
        
        <pubDate>Mon, 06 Feb 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/02/oh-my-zsh/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/02/oh-my-zsh/</guid>
      </item>
      
    
      
      <item>
        <title>Programowanie, a obok Twitter</title>
        
          <description>&lt;p&gt;Mam konto na Twitterze od roku i nadal zadziwia mnie ilość informacji jaka przepływa przez niego każdego dnia. Odkąd prowadzę bloga, około raz w tygodniu wrzucam tweet z informacją o nowym poście. Do tego często rano, gdy jadę z rodzicami do Warszawy, to podczas gdy oni słuchają informacji w radiu, ja przeglądam mój feed.&lt;/p&gt;

&lt;p&gt;Jeśli znajdę coś co uważam za warte podzielenia się ze światem to robię ‘Retweet’ i pokazuje się to wszystkim, którzy mnie obserwują. Jeśli spodoba mi się tweet lub chcę do niego wrócić w przyszłości to daję ‘♥’.&lt;/p&gt;

&lt;p&gt;No dobra, a jak to się ma do programowania?&lt;/p&gt;
</description>
        
        <pubDate>Fri, 20 Jan 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/01/programowanie-twitter/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/01/programowanie-twitter/</guid>
      </item>
      
    
      
      <item>
        <title>Dostęp do danych w F#</title>
        
          <description>&lt;p&gt;Ostatnio zacząłem pisać &lt;a href=&quot;/2017/01/fsharp-suave/&quot;&gt;aplikację webową w F# i Suave&lt;/a&gt;, w której korzystam z bazy danych. Poniżej opiszę dwie metody, za pomocą których można się odwołać do danych z bazy.&lt;/p&gt;
</description>
        
        <pubDate>Wed, 18 Jan 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/01/fsharp-data-access/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/01/fsharp-data-access/</guid>
      </item>
      
    
      
      <item>
        <title>F# web z Suave</title>
        
          <description>&lt;p&gt;Najpopularniejszym frameworkiem webowym dla aplikacji .NET jest ASP.NET MVC. Pracując w C# sprawdza się on się świetnie, ale bazuje na obiektowym paradygmacie programowania, co nie do końca współgra z funkcyjnym podejściem F#.&lt;/p&gt;

&lt;p&gt;Na szczęście jest &lt;a href=&quot;http://suave.io/&quot;&gt;Suave&lt;/a&gt;, który pozwala na proste i funkcyjne pisanie aplikacji w F#.&lt;/p&gt;
</description>
        
        <pubDate>Thu, 12 Jan 2017 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2017/01/fsharp-suave/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2017/01/fsharp-suave/</guid>
      </item>
      
    
      
      <item>
        <title>Podsumowanie 2016</title>
        
          <description>&lt;p&gt;Rok 2016 dobiega końca, więc postanowiłem napisać jego podsumowanie. Był to niewątpliwie ciężki rok, ale ilość włożonej pracy odpowiada wynikom. Czego więc dokonałem w tym roku?&lt;/p&gt;
</description>
        
        <pubDate>Tue, 27 Dec 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/12/podsumowanie-2016/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/12/podsumowanie-2016/</guid>
      </item>
      
    
      
      <item>
        <title>Aplikacja To Do - Xamarin</title>
        
          <description>&lt;p&gt;&lt;a href=&quot;/2016/12/xamarin-fsharp-wprowadzenie/&quot;&gt;Wczoraj&lt;/a&gt; opisałem pusty projekt, który dostajemy w Visual Studio, tworząc projekt F# &amp;gt; Android. Dziś czas na zbudowanie krok po kroku naszej pierwszej aplikacji - prostej listy zadań.&lt;/p&gt;
</description>
        
        <pubDate>Thu, 15 Dec 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/12/aplikacja-todo-xamarin/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/12/aplikacja-todo-xamarin/</guid>
      </item>
      
    
      
      <item>
        <title>Xamarin i F# - Wprowadzenie</title>
        
          <description>&lt;p&gt;Dziesiejszym rynkiem rządzą aplikacje mobilne. Zazwyczaj tanie (względnie), ale przy dużej ilości użytkowników twórcy zarabiają miliony. Dlatego warto umieć tworzyć aplikacje mobilne. A najlepiej tworzyć je na platformie, którą się zna i lubi - .NET&lt;/p&gt;

&lt;p&gt;Kiedy pierwszy raz chciałem zrobić aplikację na Androida, jakieś 3 lata temu, sięgnąłem po Cordovę, bo znałem podstawy HTML, i średnio mi to wyszło. Jednak teraz mając do dyspozycji Xamarin, wszystko wygląda inaczej.&lt;/p&gt;
</description>
        
        <pubDate>Wed, 14 Dec 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/12/xamarin-fsharp-wprowadzenie/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/12/xamarin-fsharp-wprowadzenie/</guid>
      </item>
      
    
      
      <item>
        <title>Dotnetowiec na Linuxie</title>
        
          <description>&lt;p&gt;Życie jest pełne wyborów, ale czasem trzeba dodać “why not both?”. Uwielbiam .NET, jest prosty do opanowania, pozwala na szybkie tworzenie aplikacji i ma bogatą bibliotekę standardową. Jednocześnie lubię pracować na Linuxie, ponieważ mogę instalować aplikacje i biblioteki jednym poleceniem w terminalu, mam szeroki wybór powłok graficznych, jest często szybszy i zajmuje mniej miejsca na dysku niż Windows.&lt;/p&gt;

&lt;p&gt;Czy jestem w stanie pogodzić .NET i Linux?  &lt;strong&gt;Tak!&lt;/strong&gt;&lt;/p&gt;
</description>
        
        <pubDate>Wed, 07 Dec 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/12/dotnet-linux/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/12/dotnet-linux/</guid>
      </item>
      
    
      
      <item>
        <title>Programowanie obiektowe w F#</title>
        
          <description>&lt;p&gt;F# jest językiem głównie funkcyjnym, ale działa w oparciu o platformę .NET, która jest zorientowana obiektowo. Jeśli piszemy kod w F# do użycia w F# to nie potrzebujemy zbytnio klas i interfejsów, ale jeśli chcemy wykorzystać fsharpową bibliotekę w C# to musi ona udostępnić klasy. Więc powiemy dziś sobie o klasach.&lt;/p&gt;
</description>
        
        <pubDate>Thu, 24 Nov 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/11/programowanie-obietkowe-fsharp/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/11/programowanie-obietkowe-fsharp/</guid>
      </item>
      
    
      
      <item>
        <title>Wprowadzenie do F# - Warsztat</title>
        
          <description>&lt;p&gt;Na kolejnym spotkaniu Grupy .NET przerobiliśmy parę zadań aby oswoić się z funkcyjnym programowaniem w F#. Poniżej nagranie ze spotkania oraz materiały.&lt;/p&gt;
</description>
        
        <pubDate>Thu, 17 Nov 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/11/warsztat-fsharp/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/11/warsztat-fsharp/</guid>
      </item>
      
    
      
      <item>
        <title>Wprowadzenie do F#</title>
        
          <description>&lt;p&gt;W tym roku postanowiłem zacząć spotkania Grupy .NET MIMUW od wprowadzenia do języka F#. Poniżej znajdziecie krótki wstęp, link do prezentacji oraz nagranie ze spotkania.&lt;/p&gt;
</description>
        
        <pubDate>Wed, 09 Nov 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/11/wprowadzenie-fsharp/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/11/wprowadzenie-fsharp/</guid>
      </item>
      
    
      
      <item>
        <title>SharpOS - marzenia i przemyślenia</title>
        
          <description>&lt;p&gt;W marcu napisałem post &lt;a href=&quot;/2016/02/nowy-projekt-sharpos/&quot;&gt;o pomyśle SharpOS&lt;/a&gt;. Idea na początku była taka, aby wziąć Android, wybebeszyć go, usunąć wszystko co związane z Javą i zaimplementować to w dotnecie. W skrócie, zderzyłem się z rzeczywistością.&lt;/p&gt;
</description>
        
        <pubDate>Fri, 04 Nov 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/11/sharpos-marzenia-przemyslenia/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/11/sharpos-marzenia-przemyslenia/</guid>
      </item>
      
    
      
      <item>
        <title>Co wyniosłem po organizacji ITADu</title>
        
          <description>&lt;p&gt;20 października odbył się IT Academic Day na wydziale MIM UW. Była to konferencja informatyczna objęta patronatem przez Microsoft i organizowana przez Grupę .NET MIMUW. Ponieważ objąłem w tym roku pozycję Microsoft Student Partner i lidera Grupy .NET, efektywnie to ja zajmowałem się większością organizacji ITADu. Postanowiłem przedstawić w tym blogpoście kilka wyzwań i błędów.&lt;/p&gt;
</description>
        
        <pubDate>Mon, 31 Oct 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/10/organizacja-itadu/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/10/organizacja-itadu/</guid>
      </item>
      
    
      
      <item>
        <title>Enum w IL</title>
        
          <description>&lt;p&gt;Zastanawialiście się jak wygląda &lt;code class=&quot;highlighter-rouge&quot;&gt;enum&lt;/code&gt; po skompilowaniu? Ja niedawno doznałem fascynacji ILem i zacząłem przyglądać się jak różne rzeczy są implementowane.&lt;/p&gt;
</description>
        
        <pubDate>Thu, 20 Oct 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/10/enum-il/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/10/enum-il/</guid>
      </item>
      
    
      
      <item>
        <title>Markdown</title>
        
          <description>&lt;p&gt;Zastanawialiście się kiedyś, patrząc w setki kontrolek Worda, po co wam to wszystko? I tak połowy nie użyjecie, a jeśli piszecie bloga to jeszcze mniej potrzeba. Dlatego uwielbiam Markdown - jest prosty, przejrzysty i uniwersalny. Czym jest Markdown, przekonacie się poniżej.&lt;/p&gt;
</description>
        
        <pubDate>Thu, 13 Oct 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/10/markdown/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/10/markdown/</guid>
      </item>
      
    
      
      <item>
        <title>Wyścig o dostęp</title>
        
          <description>&lt;p&gt;Zaczął się nowy rok akademicki i dostałem zastrzyk informacji. Za nim podążył strzał ze strzelby zadaniami domowymi. Takie życie studenta. W każdym razie, wspomiany w tytule wyścig o dostęp to problem, który opiewa przedmiot Programowanie Współbieżne. O co tu chodzi?&lt;/p&gt;
</description>
        
        <pubDate>Thu, 06 Oct 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/10/wyscig-o-dostep/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/10/wyscig-o-dostep/</guid>
      </item>
      
    
      
      <item>
        <title>Podcasty</title>
        
          <description>&lt;p&gt;Istnieje mnóstwo blogów, artykułów, filmów instruktarzowych, ale nie zawsze jesteśmy w stanie znaleźć czas, aby usiąść i poczytać. Już dłuższy czas temu zacząłem słuchać podcastów o tematyce informatycznej i uważam, że jest to świetne źródło wiedzy i rozrywki.&lt;/p&gt;
</description>
        
        <pubDate>Thu, 29 Sep 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/09/podcasty/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/09/podcasty/</guid>
      </item>
      
    
      
      <item>
        <title>Przygoda z bootowaniem</title>
        
          <description>&lt;p&gt;Informatyk to taki człowiek, który psuje systemy informacyjne, ale jest też w stanie je naprawić. Jako fan linuksa i użytkownik Windowsa po raz kolejny (&lt;a href=&quot;/2015/08/working-windowslinux-dual-boot/&quot;&gt;win-lin&lt;/a&gt; i &lt;a href=&quot;/2016/02/windowswindows-dual-boot&quot;&gt;win-win&lt;/a&gt;) zabrałem się za dualbooting. Oto historia o tym jak zepsułem Windows i jak go naprawiłem.&lt;/p&gt;
</description>
        
        <pubDate>Mon, 19 Sep 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/09/przygoda-boot/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/09/przygoda-boot/</guid>
      </item>
      
    
      
      <item>
        <title>Code Kata</title>
        
          <description>&lt;p&gt;Ucząc się karate poznajesz wiele różnych kopnięć i uderzeń. Aby je przećwiczyć wymyślono kata. Jest to jakby powolny taniec, gdzie poruszając się po literze H z każdym krokiem wykonujesz dane kopnięcie, uderzenie, blok. W tym poście piszę jednak o code kata, czyli wyćwiczeniu programowania.&lt;/p&gt;
</description>
        
        <pubDate>Tue, 13 Sep 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/09/kata/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/09/kata/</guid>
      </item>
      
    
      
      <item>
        <title>&quot;N&quot; Libs</title>
        
          <description>&lt;p&gt;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:&lt;/p&gt;
</description>
        
        <pubDate>Thu, 04 Aug 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/08/n-libs/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/08/n-libs/</guid>
      </item>
      
    
      
      <item>
        <title>IQA World Cup 2016</title>
        
          <description>&lt;center&gt;
	&lt;img src=&quot;https://drive.google.com/uc?export=view&amp;amp;id=0B8RFtAb2zD-lLXpuSDQ0VkZkSHM&quot; /&gt;
&lt;/center&gt;

&lt;p&gt;W weekend 23-24 lipca, we Frankfurcie nad Menem, odbyły się Mistrzostwa Świata w Quiditchu. Po raz pierwszy były to duże, bo obejmujące 5 kontynentów, mistrzostwa. Miałem okazję być w polskiej reprezentacji i dzielnie walczyć, aby nie być ostatnim, co miało miejsce w zeszłym roku na Mistrzostwach Europy w Sarteano.&lt;/p&gt;

</description>
        
        <pubDate>Mon, 01 Aug 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/08/iqa-worldcup/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/08/iqa-worldcup/</guid>
      </item>
      
    
      
      <item>
        <title>Odkryłem TDD</title>
        
          <description>&lt;p&gt;Niedawno zacząłem praktyki, gdzie biorę udział w eksperymencie porównania 3 metodyk pisania oprogramowania: TDD, ITL i NUT. TDD spodobało mi się szczególnie, więc postanowiłem napisać tego posta.&lt;/p&gt;
</description>
        
        <pubDate>Fri, 29 Jul 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/07/TDD-workflow/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/07/TDD-workflow/</guid>
      </item>
      
    
      
      <item>
        <title>Fedirector</title>
        
          <description>&lt;p&gt;Od pewnego czasu miałem pomysł zrobić małą aplikację do przekierowywań, którą mógłbym umieścić na serwerze i skracać sobie URLe. Stwierdziłem, że to dobra okazja aby &lt;a href=&quot;http://www.md-techblog.net.pl/2016/05/testy-fsharp/&quot;&gt;znowu&lt;/a&gt; pobawić się F#.&lt;/p&gt;

&lt;p&gt;Wszedłem na stronę &lt;a href=&quot;http://fsharp.org/&quot;&gt;fundacji F#&lt;/a&gt;, na której znalazłem potrzebne mi narzędzie &lt;a href=&quot;http://suave.io/&quot;&gt;Suave&lt;/a&gt;.&lt;/p&gt;
</description>
        
        <pubDate>Tue, 26 Jul 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/07/fedirector/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/07/fedirector/</guid>
      </item>
      
    
      
      <item>
        <title>Mapowanie typów</title>
        
          <description>&lt;p&gt;Spotkałem się ostatnio z następującym problemem: Mam bibliotekę z modelami, oraz drugą opisującą Dto (Data Transfer Object), w której typy danych są bardzo zbliżone do modeli, ale są to mimo wszystko inne typy. Szukając rozwiązania, trafiłem na &lt;a href=&quot;https://github.com/eswann/Mapster&quot;&gt;Mapster&lt;/a&gt;, bibliotekę do mapowania typów.&lt;/p&gt;
</description>
        
        <pubDate>Wed, 20 Jul 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/07/mapowanie-typow/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/07/mapowanie-typow/</guid>
      </item>
      
    
      
      <item>
        <title>MVVM - o prezentacji</title>
        
          <description>&lt;p&gt;Zaczęły się wakacje i musiałem na razie przerwać spotkania Grupy .NET. Ale nie chciałem całkowicie usypiać grupy, więc postanowiłem nagrać dla nich prezentację o wzorcu Model View ViewModel, ponieważ zaczęliśmy pod koniec semestru robić projekt oparty o Windows Presentation Foundation, a tam MVVM świetnie pasuje.&lt;/p&gt;
</description>
        
        <pubDate>Sat, 09 Jul 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/07/mvvm-prezentacja/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/07/mvvm-prezentacja/</guid>
      </item>
      
    
      
      <item>
        <title>SportsTacticsBoard - Resources</title>
        
          <description>&lt;p&gt;Na chwilę obecną SportsTacticsBoard używa plików &lt;code class=&quot;highlighter-rouge&quot;&gt;.resx&lt;/code&gt; aby przechowywać zasoby w celu internacjonalizacji. Celem jest zapewnienie właściwego tłumaczenia aplikacji użytkownikom. Jednak moim zdaniem używanie tłumaczeń w plikach .resx jest trochę niepraktyczne.&lt;/p&gt;
</description>
        
        <pubDate>Tue, 05 Jul 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/07/stb-resources/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/07/stb-resources/</guid>
      </item>
      
    
      
      <item>
        <title>SportsTacticsBoard - Import i licencja</title>
        
          <description>&lt;p&gt;Często informatycy są krótko mówiąc mało ruchliwi. Dlatego od zawsze lubiłem sport, ponieważ pozwala na odpoczynek umysłowy. Od ponad 1,5 roku jestem członkiem drużyny Quidditcha &lt;a href=&quot;https://www.facebook.com/WarsawMermaids/&quot;&gt;Warsaw Mermaids&lt;/a&gt; i od pewnego czasu staramy się osiągnąć profesjonalny poziom. Nadszedł czas tworzenia strategii, więc stwierdziłem, że poszukam programu do rysowania taktyk.&lt;/p&gt;

&lt;p&gt;Trafiłem na &lt;a href=&quot;https://sourceforge.net/projects/sportstacticsbd/&quot;&gt;SportTacticsBoard&lt;/a&gt; napisany w C#, który przestał być rozwijany 4 lata temu. Stwierdziłem, że w sumie mógłbym zrobić fork i popracować trochę nad cudzym kodem. Moim głównym celem jest stworzenie funkcji tworzenia taktyk dla drużyny Quidditcha :)&lt;/p&gt;
</description>
        
        <pubDate>Wed, 08 Jun 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/06/stb-import-and-license/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/06/stb-import-and-license/</guid>
      </item>
      
    
      
      <item>
        <title>Go Git Service</title>
        
          <description>&lt;p&gt;W &lt;a href=&quot;https://www.md-techblog.net.pl/2016/06/docker/&quot;&gt;poprzednim poście&lt;/a&gt; opisałem jak korzystać z technologii kontenerowej jaką jest Docker. Czas na kontynuację historii.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://gogs.io/&quot;&gt;Go Git Service&lt;/a&gt;, w skrócie gogs, to mała i przejrzysta platforma do hostowania repozytoriów kodu. Ma UI bardzo zbliżony do GitHuba i posiada wszystkie niezbędne funkcje, takie jak Issues, PR, Wiki, Commit history, Source preview etc. Poniżej oficjalne screeny.&lt;/p&gt;
</description>
        
        <pubDate>Fri, 03 Jun 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/06/gogs/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/06/gogs/</guid>
      </item>
      
    
      
      <item>
        <title>Docker</title>
        
          <description>&lt;p&gt;Niedawno zacząłem prowadzić Grupę .NET na Uniwersytecie Warszawskim i, ponieważ niedługo zaczniemy pierwszy projekt, postanowiłem założyć serwis Git. Dotychczas pracowałem z &lt;a href=&quot;https://about.gitlab.com/&quot;&gt;GitLabem&lt;/a&gt;, ale nie przypadł mi specjalnie do gustu. Dlatego gdy odkryłem &lt;a href=&quot;http://gogs.io/&quot;&gt;Go Git Service&lt;/a&gt; postanowiłem go wdrożyć.&lt;/p&gt;

&lt;p&gt;Gogs ma kilka metod instalacji, a jedna z nich to użycie kontenerów Dockera. Od pewnego czasu słyszałem o tej technologii, ale nie wiedziałem jak działa, ani do czego dokładnie służy. Teraz kiedy udało mi się opanować ją w stopniu jaki potrzebny był do postawienia serwera opartego o kontenery, postanowiłem opisać tu jak jej używać.&lt;/p&gt;
</description>
        
        <pubDate>Wed, 01 Jun 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/06/docker/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/06/docker/</guid>
      </item>
      
    
      
      <item>
        <title>Podsumowanie Daj Się Poznać</title>
        
          <description>&lt;p&gt;Maj dobiega końca, a wraz z nim kończy się Daj Się Poznać. Ten konkurs wniósł bardzo dużo do mojego życia, przede wszystkim zacząłem regularnie prowadzić bloga. Była to też okazja do poznania wielu osób z polskiej informatycznej blogosfery oraz innych uczestników konkursu. No i ja sam &lt;strong&gt;dałem się poznać&lt;/strong&gt;.&lt;/p&gt;
</description>
        
        <pubDate>Fri, 27 May 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/05/podsumowanie-dajsiepoznac/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/05/podsumowanie-dajsiepoznac/</guid>
      </item>
      
    
      
      <item>
        <title>Korzystanie z innych projektów</title>
        
          <description>&lt;p&gt;Mój projekt nie jest wielką innowacją. Istnieje już całkiem sporo narzędzi do pisania tekstu, ale dzięki temu mam na czym się wzorować. Jest MS Office, OpenOffice, AbiWord, WPS Office i wiele innych.&lt;/p&gt;

&lt;p&gt;Skoro istnieją aplikacje podobne do mojej to czemu nie miałbym trochę z tego skorzystać? Korzystając z dobrodziejstw projektów open-source’owych, mogę zobaczyć jak dana funkcjonalność została zaimplementowana.&lt;/p&gt;
</description>
        
        <pubDate>Thu, 26 May 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/05/inne-projekty/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/05/inne-projekty/</guid>
      </item>
      
    
      
      <item>
        <title>Testy z F#</title>
        
          <description>&lt;p&gt;Już od jakiegoś czasu miałem oko na spróbowanie F#. Połączenie szybkiego programowania funkcyjnego wraz z potężną biblioteką .NET brzmi bardzo fajnie i takie jest w rzeczywistości.&lt;/p&gt;

&lt;p&gt;Zobaczyłem, że NUnit ma w swoich przykładach projekt w F#, więc postanowiłem przepisać moje obecne testy na F#. Nie przewidziałem jednak trudności wynikających z nieznajomości tego języka…&lt;/p&gt;
</description>
        
        <pubDate>Sat, 21 May 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/05/testy-fsharp/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/05/testy-fsharp/</guid>
      </item>
      
    
      
      <item>
        <title>Testy jednostkowe z NUnit i Moq</title>
        
          <description>&lt;p&gt;Dotychczas nie pisałem testów (jakoś kod testowałem ręcznie) i odkrywam jak bardzo są pożyteczne. Po pierwsze i najważniejsze, umożliwiają wykrycie błędów w implementacji klas zanim zaczniemy ich używać.&lt;/p&gt;

&lt;p&gt;Tworząc nowy projekt testów w Visual Studio dostajemy MSTest, który nie działa pod Linuxem. W związku z tym sięgnąłem po &lt;a href=&quot;https://www.nuget.org/packages/NUnit/&quot;&gt;NUnit&lt;/a&gt;.&lt;/p&gt;
</description>
        
        <pubDate>Thu, 19 May 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/05/testy-jednostkowe/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/05/testy-jednostkowe/</guid>
      </item>
      
    
      
      <item>
        <title>Logi z NLog</title>
        
          <description>&lt;p&gt;Jest wiele sposobów na znajdowanie błędów w aplikacji: dowody matematyczne, testy jednostkowe, ręczne testowanie i debugowanie. Niestety debugowanie może być bardzo czasochłonne jeśli nie wiemy, w którym miejscu znajduje się problem. Tworzenie logów może nam pomóc zlokalizować ten problem.&lt;/p&gt;

&lt;p&gt;Istnieje kilka .NETowych frameworków do logowania, m.in. log4net, WisdomCloud.Log i NLog, który postanowiłem użyć w moim projekcie. Można go pobrać z &lt;a href=&quot;http://www.nuget.org/package/NLog/&quot;&gt;NuGet:NLog&lt;/a&gt;.&lt;/p&gt;
</description>
        
        <pubDate>Tue, 17 May 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/05/logging/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/05/logging/</guid>
      </item>
      
    
      
      <item>
        <title>Continuous Integration</title>
        
          <description>&lt;p&gt;Piszemy kod, commitujemy, pushujemy. I jesteśmy potem zajęci, zapominamy o kodzie. W tym czasie ktoś stwierdza, że ściągnie sobie nasze repo. Więc klonuje, pobiera paczki, odpala build i … nie działa.&lt;/p&gt;

&lt;p&gt;Powyższe spowodowane jest tym, że programista nie zawsze pamięta by skompilować, uruchomić, przetestować kod po wprowadzeniu zmian. Powinien pamiętać, ale zdarza się, trudno. To jest jeden ze scenariuszy gdzie &lt;strong&gt;CI&lt;/strong&gt;, czyli Continuous Integration, może pomóc.&lt;/p&gt;
</description>
        
        <pubDate>Wed, 11 May 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/05/ci/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/05/ci/</guid>
      </item>
      
    
      
      <item>
        <title>IRegistrationModule - porządki w kontenerze</title>
        
          <description>&lt;p&gt;Jakiś czas temu pisałem o &lt;a href=&quot;https://www.md-techblog.net.pl/2016/03/ioc1-dependency-injection/&quot;&gt;DI&lt;/a&gt; i &lt;a href=&quot;https://www.md-techblog.net.pl/2016/03/ioc2-inversion-of-control/&quot;&gt;IoC&lt;/a&gt; oraz o tym, że będę używał kontenera do automatycznego ładowania wielu modułów podczas startu aplikacji. Początkowo zrobiłem metodę &lt;code class=&quot;highlighter-rouge&quot;&gt;ContainerWrapper.AutoRegister()&lt;/code&gt;, która iterowała po wszystkich bibliotekach związanych z SharpOfficem i rejestrowała odpowiednie klasy. Ale było to dość zagmatwane, więc postanowiłem trochę to uprzątnąć.&lt;/p&gt;
</description>
        
        <pubDate>Fri, 06 May 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/05/registration-module/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/05/registration-module/</guid>
      </item>
      
    
      
      <item>
        <title>Migracja nie bez problemów</title>
        
          <description>&lt;p&gt;W weekend zdecydowałem się na upublicznienie mojego &lt;a href=&quot;https://www.md-techblog.net.pl/2016/05/migracja-bloga/&quot;&gt;zmigrowanego bloga&lt;/a&gt;, więc pofatygowałem się na stronę mojego providera domeny i zmieniłem CNAME na &lt;code class=&quot;highlighter-rouge&quot;&gt;manio143.github.io&lt;/code&gt;, aby domena wskazywała w nowe miejsce.&lt;/p&gt;

&lt;p&gt;Zastanawialiście się kiedyś co się stanie jeśli serwery DNS aktualizują cache z różną prędkością?&lt;/p&gt;
</description>
        
        <pubDate>Wed, 04 May 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/05/migracja-nie-bez-problemow/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/05/migracja-nie-bez-problemow/</guid>
      </item>
      
    
      
      <item>
        <title>Migracja bloga &amp;ensp; WordPress &amp;rarr; Jekyll</title>
        
          <description>&lt;p&gt;Czemu postanowiłem zmienić silnik bloga? Głównie z powodu mojej niecierpliwości. Czas oczekiwania ~10 sekund (a czasem dłużej) na stronę zachodzi za skórę. Rozwiązanie nr. 1 - plugin cache’ujący. Rozwiązanie nr. 2 - Jekyll. Wybrałem Jekyll.&lt;/p&gt;

&lt;p&gt;Aby dodać trochę kontekstu, dodam, że postawiłem stronę na Azurze (AppService) wraz z maszyną wirtualną do bazy danych. Możliwe, że takie ułożenie również przyczyniło się do spowolnienia strony. Wraz ze zmianą silnika na Jekyll, robię migrację bloga na GitHub, ponieważ jest taniej ($7/miesiąc), a jako student mam to za darmo.&lt;/p&gt;

&lt;p&gt;Jakie kroki musiałem przejść aby zakończyć migrację?&lt;/p&gt;
</description>
        
        <pubDate>Tue, 03 May 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/05/migracja-bloga/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/05/migracja-bloga/</guid>
      </item>
      
    
      
      <item>
        <title>git gui - Arch Linux</title>
        
          <description>&lt;p&gt;Moja ,,stacja robocza” składa się z dwóch laptopów - jednym z Windows 7 i drugim z linuxem Manjaro. Po co mi dwa systemy? Pierwszy powód - lubię linux, nawet bardzo, ale są aplikacje, których na nim nie uruchomię (Visual Studio, Adobe After Effects, etc.). Drugi powód - bardzo lubię ideę aplikacji cross-platformowych i ze względu, że sam próbuję taką napisać, potrzebuję dwóch środowisk do testowania.&lt;/p&gt;

&lt;p&gt;Ale nie o tym chciałem napisać. Moim ulubionym systemem kontroli wersji jest GIT, więc instaluję go na każdym swoim komputerze. Jestem również wyznawcą korzystania z gita z linii poleceń, bo często jest to szybsze i przyjemniejsze niż jakiekolwiek gui. Jedyną płaszczyzną kiedy uruchamiam aplikację niekonsolową jest historia, czyli &lt;code class=&quot;highlighter-rouge&quot;&gt;gitk&lt;/code&gt;. Nie mam nic przeciwko &lt;code class=&quot;highlighter-rouge&quot;&gt;git log&lt;/code&gt; / &lt;code class=&quot;highlighter-rouge&quot;&gt;git show&lt;/code&gt;, ale gui jest ciut czytelniejsze.&lt;/p&gt;
</description>
        
        <pubDate>Sun, 01 May 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/05/gitk-arch-linux/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/05/gitk-arch-linux/</guid>
      </item>
      
    
      
      <item>
        <title>GRUB instalacja/aktualizacja</title>
        
          <description>&lt;p&gt;Dawno, dawno temu, w zeszłym roku napisałem post &lt;a href=&quot;/2015/08/working-windowslinux-dual-boot/&quot;&gt;,,Working Windows&amp;amp;Linux dual-boot”&lt;/a&gt;, w kórym opisałem kroki jakie trzeba zrobić aby zainstalować GRUB bootloader po instalacji Windowsa. Te kroki dotyczą również instalacji dowolnego innego systemu.&lt;/p&gt;

&lt;p&gt;Ponieważ robiłem te same kroki czwarty albo piąty raz, przypomniałem sobie powiedzenie:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Jeśli robisz coś więcej niż raz, można to zautomatyzować.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Więc napisałem skrypt w bashu, który w dużym stopniu upraszcza moje zmagania.&lt;/p&gt;
</description>
        
        <pubDate>Sat, 30 Apr 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/04/grub-skrypt/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/04/grub-skrypt/</guid>
      </item>
      
    
      
      <item>
        <title>Menu - podejście nr2</title>
        
          <description>&lt;p&gt;Dlaczego podejście drugie? Ponieważ już raz pisałem o &lt;a href=&quot;https://www.md-techblog.net.pl/2016/03/gui-menu/&quot;&gt;generowaniu Menu&lt;/a&gt;, ale trochę w inny sposób i w innym środowisku. Wtedy po prostu tworzyłem obiekty &lt;code class=&quot;highlighter-rouge&quot;&gt;Xwt.MenuItem&lt;/code&gt;. Teraz zmieniłem podejście. Interfejs &lt;code class=&quot;highlighter-rouge&quot;&gt;IMenuElement&lt;/code&gt; określa minimalny wspólny interfejs obiektów menu w dowolnym frameworku jakiego będę używał. I na podstawie definicji menu złożenej z obiektów &lt;code class=&quot;highlighter-rouge&quot;&gt;IMenuElement&lt;/code&gt; będę generował odpowiednią strukturę obiektów.&lt;/p&gt;
</description>
        
        <pubDate>Fri, 29 Apr 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/04/menu-podejscie-nr2/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/04/menu-podejscie-nr2/</guid>
      </item>
      
    
      
      <item>
        <title>WPF &amp;#8211; zaczynamy zabawę! &amp;#8211; metoda Main()</title>
        
          <description>&lt;p&gt;Prawdę mówiąc dotychczas stworzyłem jedną aplikację w WPF-ie. Prosta gra w kamień-papier-nożyce po LAN-ie. Nie wymagała ode mnie żadnej wiedzy o tym jak się tworzy aplikacje okienkowe w XAMLu, bo miała minimalny interfejs, który wyklikałem.&lt;/p&gt;

&lt;p&gt;Z SharpOffice’m sprawa będzie wyglądała zupełnie inaczej. Po pierwsze ograniczę ilość XAMLa do minimum, ponieważ będę chciał dynamicznie generować zawartość okna. Jestem jednak prawie przekonany, że będę musiał napisać swoją kontrolkę (albo kilka) i tam XAML okaże się niezbędny. Będę miał również okazję pobawić się stylami, które, z tego co czytałem, potrafią zdziałać cuda.&lt;/p&gt;

&lt;p&gt;Ale zanim to wszytko się ogarnę, trzeba jakoś tę aplikację uruchomić.&lt;/p&gt;
</description>
        
        <pubDate>Wed, 27 Apr 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/04/wpf-zaczynamy-zabawe-metoda-main/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/04/wpf-zaczynamy-zabawe-metoda-main/</guid>
      </item>
      
    
      
      <item>
        <title>European Quidditch Cup 2016</title>
        
          <description>&lt;p&gt;Przez ostatnie dwa tygodnie na blogu zapanowała cisza. Spowodowana była ona moim wyjazdem do Włoch na międzynarodowy turniej w Quidditchu. Razem z moją drużyną Warsaw Mermaids pojechaliśmy do Gallipoli aby uczestniczyć w tegorocznej edycji Pucharu Europy.&lt;/p&gt;

&lt;div class=&quot;alignleft&quot;&gt;
  &lt;img src=&quot;http://i0.wp.com/static.wixstatic.com/media/aedce4_c45d9bcd3612420292cfa762ae5d3b7c.gif?w=150&amp;amp;ssl=1&quot; alt=&quot;EQC2016&quot; data-recalc-dims=&quot;1&quot; /&gt;
&lt;/div&gt;

&lt;p&gt;Nie byliśmy jedyną polską drużyną na turnieju. Oprócz nas przyjechała drużyna Kraków Dragons, która wygrała tegoroczne Mistrzostwa Polski w Quidditchu. Organizatorzy zadbali aby żadne drużyny z tego samego kraju nie walczyły ze sobą w potyczkach grupowych, więc nie mieliśmy okazji się zrewanżować za przegraną na krajowych mistrzostwach. Ale i tak było niesamowicie 😉&lt;/p&gt;
</description>
        
        <pubDate>Sat, 23 Apr 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/04/eqc2016/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/04/eqc2016/</guid>
      </item>
      
    
      
      <item>
        <title>Cross-Platform App != Cross-Platform GUI</title>
        
          <description>&lt;p&gt;W pogoni za idealnym frameworkiem do GUI, zapomniałem o bardzo ważnej rzeczy:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Wielofunkcyjny scyzoryk nie zastąpi zestawu kluczy&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Podobnie jest z wieloma innymi wielofunkcyjnymi rzeczami (np. smartfony nie zastąpią nigdy lustrzanek), więc również z frameworkami do GUI. Zarówno &lt;a href=&quot;https://github.com/mono/xwt&quot;&gt;Xwt&lt;/a&gt; jak i &lt;a href=&quot;https://github.com/picoe/Eto&quot;&gt;Eto&lt;/a&gt; nie mogą w pełni wykorzystywać wszystkich obsługiwanych platform, ponieważ ich celem jest zapewnienie wspólnego API do tworzenia aplikacji na wiele platform. Zamiast tego należy zrobić to co ludzie robili od dawna: oddzielić interfejs użytkownika od logiki i wyodrębnić po jednym projekcie na każdą platformę.&lt;/p&gt;
</description>
        
        <pubDate>Wed, 06 Apr 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/04/cross-platform-app-vs-gui/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/04/cross-platform-app-vs-gui/</guid>
      </item>
      
    
      
      <item>
        <title>Architektura rozszerzeń</title>
        
          <description>&lt;p&gt;Patrząc na aplikacje takie jak Visual Studio, czy Adobe Creative Suite, zauważyłem, że rozszerzenia mają zazwyczaj kilka wejść do programu. Podstawowym jest menu. Może to być dodatkowa pozycja w menu ,,Narzędzia”, może to być osobne menu. Jest to dosyć wygodne, ponieważ nie musimy się martwić gdzie ustawić nasz przycisk i jak powinien wyglądać.&lt;/p&gt;

&lt;p&gt;Kolejne punkty wejścia to toolbar (pasek narzędzi), menu kontekstowe (pod prawym przyciskiem myszy) i magiczne skróty klawiszowe (które moim zdaniem powinny mieć odpowiedniki w menu). Jak do tego podejść od strony kodu? Oczywiście przez interfejsy 😉&lt;/p&gt;
</description>
        
        <pubDate>Mon, 04 Apr 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/04/architektura-rozszerzen/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/04/architektura-rozszerzen/</guid>
      </item>
      
    
      
      <item>
        <title>Cross-Platform GUI Toolkit</title>
        
          <description>&lt;p&gt;Zacząłem mój projekt z myślą:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;,,Napiszę darmowy, open-sourcowy, &lt;strong&gt;cross-platformowy&lt;/strong&gt; pakiet Office.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Swego czasu zrobiłem kilka kontrybucji do &lt;a href=&quot;https://github.com/SirCmpwn/TrueCraft&quot;&gt;TrueCrafta&lt;/a&gt;, który do swojego launchera używa &lt;a href=&quot;http://github.com/mono/xwt&quot;&gt;Mono Xwt&lt;/a&gt;. Nie zastanawiałem się zbytnio i postanowiłem na nim oprzeć mój projekt. Okazuje się jednak, że jest on bardzo ograniczony i istnieją lepsze frameworki.&lt;/p&gt;

&lt;p&gt;Poszukując przykładów aplikacji, które używają Xwt (btw, nie znalazłem żadnej), natrafiłem na &lt;a href=&quot;http://forums.dotnetfoundation.org/t/cross-platform-wpf/421&quot;&gt;dyskusję&lt;/a&gt;. na forum .Net Foundation na temat istnienia cross-platformowego WPFu. Kilka osób przedstawiło alternatywne frameworki, które przedstawię poniżej.&lt;/p&gt;
</description>
        
        <pubDate>Wed, 30 Mar 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/03/cross-platform-gui-toolkit/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/03/cross-platform-gui-toolkit/</guid>
      </item>
      
    
      
      <item>
        <title>GUI - Menu</title>
        
          <description>&lt;center&gt;
   &lt;img src=&quot;/assets/img/sharpnote-menu.jpg&quot; alt=&quot;sharpnote-menu&quot; /&gt;
&lt;/center&gt;

&lt;p&gt;Tak jak napisałem w &lt;a href=&quot;https://www.md-techblog.net.pl/2016/03/sharpnote-pierwszy-krok&quot;&gt;tym poście&lt;/a&gt;, zacząłem pracować nad pierwszą aplikacją pakietu, SharpNote’em. Nie bardzo wiem, z której strony ten wielki program ugryźć, więc zacząłem od czegoś prostego - Menu.&lt;/p&gt;

</description>
        
        <pubDate>Mon, 28 Mar 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/03/gui-menu/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/03/gui-menu/</guid>
      </item>
      
    
      
      <item>
        <title>Atrybuty - jak i po co?</title>
        
          <description>&lt;p&gt;Czasami pisząc kod stwierdzamy, że chcemy w jakiś sposób opisać nasze typy w taki sposób, aby można było się do tego odnieść w kodzie. Z pomocą przychodzą nam dwie funkcjonalności .NETu: Reflection i atrybuty.&lt;/p&gt;

&lt;h5 id=&quot;czym-są-atrybuty&quot;&gt;Czym są atrybuty?&lt;/h5&gt;
</description>
        
        <pubDate>Thu, 24 Mar 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/03/atrybuty-jak-i-po-co/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/03/atrybuty-jak-i-po-co/</guid>
      </item>
      
    
      
      <item>
        <title>AJAX w ASP.NET</title>
        
          <description>&lt;center&gt;
  &lt;img src=&quot;https://devmuster.pja.edu.pl/assets/hackathon.svg&quot; alt=&quot;DevMuster&quot; width=&quot;350px&quot; /&gt;&lt;span style=&quot;font-size:36px;&quot;&gt; + &lt;/span&gt;&lt;img src=&quot;http://i0.wp.com/upload.wikimedia.org/wikipedia/commons/thumb/a/a1/AJAX_logo_by_gengns.svg/2000px-AJAX_logo_by_gengns.svg.png?w=250&amp;amp;ssl=1&quot; alt=&quot;AJAX&quot; /&gt;
&lt;/center&gt;

&lt;p&gt;Niedawno brałem udział w hackathonie DevMuster organizowanym w PJATK. Tematyka obejmowała tworzenie rozwiązań w dwóch kategoriach: dla studentów i dla seniorów. Mój team postawił na aplikację łączącą seniorów chcących dzielić się wiedzą z juniorami szukających jakichś informacji.&lt;/p&gt;

&lt;p&gt;Początkowo chcieliśmy pracować w Django, ale moja znajomość Pythona jest znikoma, więc po 3 godzinach wywaliliśmy cały projekt i zaczęliśmy od nowa w ASP.NET MVC. Trochę się pomęczyliśmy, ja zdobyłem nowe doświadczenia z Entity Framework, no i wyszło &lt;a href=&quot;http://experts-hackathon.azurewebsites.net/&quot;&gt;coś takiego&lt;/a&gt;.&lt;/p&gt;

&lt;h5 id=&quot;a-gdzie-ajax&quot;&gt;A gdzie AJAX?&lt;/h5&gt;
</description>
        
        <pubDate>Mon, 21 Mar 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/03/ajax-asp-net/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/03/ajax-asp-net/</guid>
      </item>
      
    
      
      <item>
        <title>SharpNote - pierwszy krok</title>
        
          <description>&lt;p&gt;Ponieważ bardzo ciężko pisać kod ,,na sucho”, postanowiłem rozpocząć tworzenie pierwszej aplikacji. W trakcie jej pisania wyjdą na jaw prawie wszystkie elementy mojego projektu, które muszą być zdefiniowane i po części zaimplementowane. Dodatkowo będę mógł odpalić mój Runtime bez wyjątków mówiących, że czegoś mi brakuje.&lt;/p&gt;
</description>
        
        <pubDate>Fri, 18 Mar 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/03/sharpnote-pierwszy-krok/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/03/sharpnote-pierwszy-krok/</guid>
      </item>
      
    
      
      <item>
        <title>IoC[2] - Inversion of Control</title>
        
          <description>&lt;p&gt;Zacząłem się wczytywać czym jest IoC. Okazuje się, że jest to bardzo szerokie pojęcie, a DI to tylko jedna jego interpretacja. W zeszłym tygodniu pisałem o tym czym jest &lt;a href=&quot;https://www.md-techblog.net.pl/2016/03/ioc1-dependency-injection/&quot;&gt;Dependency Injection&lt;/a&gt;. Teraz natomiast opowiem pokrótce czym jest IoC i jak będę go używał w moim projekcie.&lt;/p&gt;
</description>
        
        <pubDate>Wed, 16 Mar 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/03/ioc2-inversion-of-control/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/03/ioc2-inversion-of-control/</guid>
      </item>
      
    
      
      <item>
        <title>IoC[1] - Dependency Injection</title>
        
          <description>&lt;p&gt;Zanim omówimy czym jest IoC i jak będę go używał, zacznijmy od tego czym jest &lt;strong&gt;Dependency Injection&lt;/strong&gt;. Głównie chodzi o to, żeby rozdzielić implementacje poszczególnych klas. Załóżmy, że mamy taki kod:&lt;/p&gt;
</description>
        
        <pubDate>Fri, 11 Mar 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/03/ioc1-dependency-injection/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/03/ioc1-dependency-injection/</guid>
      </item>
      
    
      
      <item>
        <title>IBlessed - błogosławione interfejsy</title>
        
          <description>&lt;center&gt;
  &lt;img src=&quot;http://i2.wp.com/i2.kym-cdn.com/photos/images/newsfeed/000/591/928/94f.png?w=200&quot; /&gt;
&lt;/center&gt;

&lt;p&gt;Nie zdawałem sobie sprawy jak bardzo łatwiej pisać kod w oparciu o interfejsy. Zamiast tworzyć od razu klasy i martwić się ich implementacją, możemy odłożyć to zadanie na przyszłość. Dzięki temu można stworzyć hierarchię zależności między typami, nie martwiąc się zbytnio wnętrzem interfejsu.&lt;/p&gt;
</description>
        
        <pubDate>Wed, 09 Mar 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/03/iblessed-blogoslawione-interfesjy/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/03/iblessed-blogoslawione-interfesjy/</guid>
      </item>
      
    
      
      <item>
        <title>Microsoft 3C</title>
        
          <description>&lt;p&gt;W ostatni poniedziałek (07.03) wziąłem udział w konkursie Microsoft College Code Competition (&lt;a href=&quot;https://msft3c.com/&quot;&gt;link&lt;/a&gt;). Grupy, 1-3 osobowe, miały do rozwiązania 7 zadań (3 po 1, 2 po 2 i 2 po 3 punkty). Na rozwiązanie zadań dostaliśmy około 2 godziny. Biorąc udział samemu, nie miałem wielkich nadziei na powodzenie, ale i tak udało mi się zdobyć 4 punkty (rozwiązałem 3 zadania). Na koniec mieliśmy szansę porozmawiać z Melissą B., rekruterką Microsoftu, o procesie rekrutacji na staże i pracę.&lt;/p&gt;
</description>
        
        <pubDate>Tue, 08 Mar 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/03/microsoft3c/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/03/microsoft3c/</guid>
      </item>
      
    
      
      <item>
        <title>GirlzCamp 2016 - wrażenia</title>
        
          <description>&lt;p&gt;W ostatnią sobotę (05.03) odbył się GirlzCamp, warsztaty skierowane do dziewczyn, organizowane przez Microsoft. Zapisanych uczestniczek było ponad 100 i mogły wybrać jedną z 8 ścieżek: UWP, Xamarin, ASP.NET MVC, Umbraco, Construct 2, Azure, IoT, Blender+Unity. Dodatkowo, rekruterki Microsoft ze Stanów przedstawiły ofertę pracy i praktyk za granicą. No i była pizza 😉&lt;/p&gt;
</description>
        
        <pubDate>Mon, 07 Mar 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/03/girlzcamp-2016-wrazenia/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/03/girlzcamp-2016-wrazenia/</guid>
      </item>
      
    
      
      <item>
        <title>Konfiguracja</title>
        
          <description>&lt;p&gt;Każda większa aplikacja potrzebuje zapisywać sobie jakieś ustawienia. Aby to ułatwić wymyśliłem interfejs &lt;code class=&quot;highlighter-rouge&quot;&gt;IConfiguration&lt;/code&gt;. Stwierdziłem, że niezależnie od implementacji tego interfejsu, będzie potrzebowali dwóch metod:&lt;/p&gt;

</description>
        
        <pubDate>Fri, 04 Mar 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/03/konfiguracja/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/03/konfiguracja/</guid>
      </item>
      
    
      
      <item>
        <title>Hackathon eth1</title>
        
          <description>&lt;center&gt;
  &lt;img src=&quot;http://eth1-mimuw.janestreet.com/eth1_logo.svg&quot; width=&quot;120px&quot; alt=&quot;eth1 logo&quot; /&gt;
&lt;/center&gt;

&lt;p&gt;W ostatnią sobotę wziąłem z kolegą udział w hackathonie eth1 organizowanym przez Jane Street. Można było pisać w dowolnym języku, więc wybrałem C#. Program musiał działać na maszynie wirtualnej z Ubuntu postawionej w chmurze Amazona, którą dostarczał organizator.&lt;/p&gt;
</description>
        
        <pubDate>Wed, 02 Mar 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/03/hackathon-eth1/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/03/hackathon-eth1/</guid>
      </item>
      
    
      
      <item>
        <title>Struktura projektu</title>
        
          <description>&lt;p&gt;SharpOffice to mój pierwszy duży projekt. Oraz mój pierwszy projekt open-source’owy, co oznacza, że jeśli ktoś będzie chciał mi pomóc, będzie musiał być w stanie mój kod przeczytać. Czytałem całkiem sporo o przypadkach brzydkiego, zawiłego kodu i chciałbym uniknąć tego w moich projektach. Dodatkowo mój projekt ma być zmodularyzowany, co wymusza pewne wzorce projektowe oraz powinno pomóc utrzymać fajną strukturę projektu.&lt;/p&gt;
</description>
        
        <pubDate>Tue, 01 Mar 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/03/struktura-duzego-projektu/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/03/struktura-duzego-projektu/</guid>
      </item>
      
    
      
      <item>
        <title>SharpOffice - Daj Się Poznać</title>
        
          <description>&lt;p&gt;Odkładam na jakiś czas pracę nad systemem operacyjnym, o którym pisałem jakiś czas temu. Takie projekty są bardzo czasochłonne i potrzebują dużego doświadczenia. Aby to doświadczenie zdobyć, postanowiłem rozpocząć drugi projekt &lt;strong&gt;SharpOffice&lt;/strong&gt;. Moim zamiarem jest napisanie open-source’owego pakietu Office w C#, oraz zmodularyzowanie go w taki sposób aby łatwo było tworzyć kolejne aplikacje do pakietu, a istniejące rozszerzać wtyczkami. Biorę również udział w konkursie &lt;a href=&quot;http://dajsiepoznac.pl/&quot;&gt;Daj Się Poznać&lt;/a&gt;, i przez następne 10 tygodni będę opisywał kolejne postępy w pisaniu SharpOffice’a. Jego kod źródłowy można zobaczyć na &lt;a href=&quot;https://github.com/manio143/SharpOffice&quot;&gt;GitHubie&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/img/DSP2016-logo-RGB-color-2.png&quot; alt=&quot;DajSiePoznac2016&quot; width=&quot;300px&quot; class=&quot;aligncenter size-medium&quot; /&gt;&lt;/p&gt;
</description>
        
        <pubDate>Sun, 28 Feb 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/02/sharpoffice-daj-sie-poznac/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/02/sharpoffice-daj-sie-poznac/</guid>
      </item>
      
    
      
      <item>
        <title>GirlzCamp &amp;ASP.NET MVC</title>
        
          <description>&lt;p&gt;GirlzCamp to całodzienne warsztaty dla dziewczyn zainteresowanych technologią organizowane przez Microsoft Student Partnerów. Więcej informacji na temat warsztatów znajdziecie &lt;a href=&quot;http://girlzcamp.pl&quot;&gt;tutaj&lt;/a&gt;.&lt;/p&gt;

</description>
        
        <pubDate>Wed, 24 Feb 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/02/girlzcamp-asp-net-mvc/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/02/girlzcamp-asp-net-mvc/</guid>
      </item>
      
    
      
      <item>
        <title>Nowy projekt: SharpOS</title>
        
          <description>&lt;p&gt;Wpadłem na genialny pomysł: weźmy Android, rozbierzmy go na części, wyrzućmy wszystko co związane z Javą i napiszmy nowe moduły oparte o .NET. Dopiero po chwili dotarło do mnie ile to pracy. Po pierwsze muszę zapoznać się z architekturą Androida, co, jak i dlaczego działa, zrozumieć jego kod źródłowy, a następnie zacząć reimplementować moduły aby spełniały moje oczekiwania.&lt;/p&gt;
</description>
        
        <pubDate>Tue, 02 Feb 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/02/nowy-projekt-sharpos/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/02/nowy-projekt-sharpos/</guid>
      </item>
      
    
      
      <item>
        <title>Windows&amp;Windows dual-boot</title>
        
          <description>&lt;h3 id=&quot;problem&quot;&gt;Problem&lt;/h3&gt;

&lt;p&gt;Niedawno zainstalowałem Windows 10, na partycji obok Windows 7. No i stało się wiadome: dziesiątka nadpisała mi bootsector i straciłem dostęp do drugiego systemu. Zacząłem szukać rozwiązania i trafiłem na &lt;a href=&quot;http://blogs.interfacett.com/how-to-use-bcdedit-to-add-menu-items-to-the-selection-screen-in-windows-server-and-win7&quot;&gt;ten artykuł&lt;/a&gt;.&lt;/p&gt;

</description>
        
        <pubDate>Mon, 01 Feb 2016 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2016/02/windowswindows-dual-boot/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2016/02/windowswindows-dual-boot/</guid>
      </item>
      
    
      
      <item>
        <title>Working Windows&amp;Linux dual-boot</title>
        
          <description>&lt;p&gt;A while ago, I got a new laptop so that I can experiment without destroying my stable system. I started with OpenSUSE 13.2, but it became hard to work on (some stuff didn’t work like it should). Then I installed Manjaro, which is based on Arch. It’s great.&lt;/p&gt;

&lt;p&gt;Recently, I decided to install Windows on a spare partition. It worked fine. &lt;strong&gt;But&lt;/strong&gt; it removed GRUB from MBR. Yeah, not nice. So, in to the Internet: &lt;code class=&quot;highlighter-rouge&quot;&gt;DuckDuckGo -&amp;gt; &quot;windows grub install&quot;&lt;/code&gt; and here’s what I got:&lt;/p&gt;

</description>
        
        <pubDate>Thu, 27 Aug 2015 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2015/08/working-windowslinux-dual-boot/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2015/08/working-windowslinux-dual-boot/</guid>
      </item>
      
    
      
      <item>
        <title>Trying to get admin privileges from a standard user</title>
        
          <description>&lt;p&gt;So recently I was at my grandma’s and she only had access to a low-privileged account, as my uncle had configured the system and set a password on the admin account. I figured it would be a nice challenge to get my hands on his password, or get higher privileges in some other way. One thing though, I had to achieve this without rebooting the device.&lt;/p&gt;
</description>
        
        <pubDate>Thu, 30 Jul 2015 00:00:00 +0000</pubDate>
        <link>
        https://www.md-techblog.net.pl/2015/07/trying-to-get-admin-privileges-from-a-standard-user/</link>
        <guid isPermaLink="true">https://www.md-techblog.net.pl/2015/07/trying-to-get-admin-privileges-from-a-standard-user/</guid>
      </item>
      
    
  </channel>
</rss>
