31 grudnia 2013
Oddawanie krwi oraz płytek krwi - jak to tak naprawdę wygląda. Z wizytą w RCKiK we Wrocławiu - specjalnie dla #barylkakrwi
Krwi nie da się wyprodukować w laboratorium, ani niczym jej zastąpić. Gdy ktoś krwi potrzebuje, może polegać tylko i wyłącznie na dawcach, którzy wcześniej dobrowolnie ją oddali. Dlatego krwiodawstwo jest takie ważne.
Krew czy inne składniki krwi zacząłem honorowo oddawać już 2 dni po moich 18 urodzinach. Od tego czasu regularnie staram się odwiedzać RCKiK, co w trakcie całego życia pozwoliło mi oddać ok 10 litrów krwi. Satysfakcja jaką zawsze odczuwam po takim dobrym uczynku jest nagrodą samą w sobie, dlatego staram się promować taką postawę wśród innych.
Kilka miesięcy temu wspólnie z moją żoną Magdaleną i nowo poznanym znajomym Przemkiem, @przemi_88 z serwisu wykop.pl, postanowiliśmy wybrać się do Regionalnego Centrum Krwiodawstwa i Krwiolecznictwa we Wrocławiu i przygotować foto reportaż, który ma na celu przybliżenie tego jak to wszystko wygląda podczas typowej wizyty.
Reportaż ten dedykowany jest wszystkim osobom, które aktywnie biorą udział w akcji
oraz wszystkim tym, którzy do tej akcji w przyszłości dołączą :) Osobiście dedykuje ten artykuł jeszcze jednej osobie, ale o tym na końcu artykułu.
30 listopada 2013
I Ty możesz zostać gwiazdą Internetów - pamiętna poduszka
To był Maj, rok 2012. Podczas podróży autokarem do Paryża, mając bardzo ciekawych kompanów podróży, pewna nieznajoma Pani podzieliła się ze mną i moją żoną, refleksją na temat tego w jaki sposób ona używa swojej poduszki podróżnej, w odróżnieniu od tego jak robią to wszyscy inni, rzekomo nieprawidłowo.
Podczas następnych kilkunastu godzin, mieliśmy okazję przetestować owy sposób. Wpadłem na dość głupi pomysł i stwierdziłem "Hej, Magdalena... nagrajmy krótki filmik, instruktażowy" :)
Tak naprawdę miał to być filmik nakręcony dla żartu, dla nas na pamiątkę, który miał nam później przypominać jaki świetny humor mieliśmy podczas całej wyprawy. Coś mnie jednak podkusiło i wrzuciłem ten filmik do Internetu.... i się zaczęło :)
Podczas następnych kilkunastu godzin, mieliśmy okazję przetestować owy sposób. Wpadłem na dość głupi pomysł i stwierdziłem "Hej, Magdalena... nagrajmy krótki filmik, instruktażowy" :)
Tak naprawdę miał to być filmik nakręcony dla żartu, dla nas na pamiątkę, który miał nam później przypominać jaki świetny humor mieliśmy podczas całej wyprawy. Coś mnie jednak podkusiło i wrzuciłem ten filmik do Internetu.... i się zaczęło :)
24 listopada 2013
Konkursy algorytmiczne i ich rola w moim życiu
Postanowiłem zebrać do kupy materiały, które gdzieś kiedyś wytworzyłem, mają jakąś wartość edukacyjną a jak do tej pory leżały gdzieś nie uporządkowane w czeluściach internetu, czy na moim dysku...
Tym sposobem, chciałbym dzisiaj poruszyć temat konkursów algorytmicznych, którym przez pewien okres poświęcałem naprawdę bardzo dużo czasu w swoim życiu.
Jeżeli należysz do osób, które tak myślą, to jesteś po części w dużym błędzie!
Owszem, konkursu algorytmicznego nie wygra na pewno żaden amator. Reguły takich zawodów są bardzo ściśle określone i w bardzo brutalny sposób są weryfikowane twarde umiejętności zawodników.
Nic jednak nie stoi na przeszkodzie, by w pierwszych fazach takich konkursów udział wzięły osoby, które dopiero co rozpoczęły swoje przygody z programowaniem. Wygrać pewnie nie wygrają, ale skoro weryfikacja umiejętności takich zawodników odbywa się automatycznie to znaczy, że koszt oceny takiej osoby, jest praktycznie pomijalny.
Jest naprawdę dużo stron, na których można znaleźć zadania, które polegają na zaprogramowania dosłownie prostej procedury dodawania, czy obliczenia średniej dwóch liczb - serio :)
Na co dzień w życiu gdy piszemy jakiś program, piszemy go w taki sposób, by wygodnie się z niego nam korzystało. Dlatego jesteśmy przyzwyczajeni, że dobry program użytkowy ma obsługę zarówno myszki jak i umożliwia obsługę za pomocą klawiatury.... no i oczywiście korzysta z ekranu wyświetlając odpowiednie komunikaty, czy wyniki swojej pracy.
Konkursy algorytmiczne mają na celu sprawdzenie umiejętności stworzenia programu, który w wyznaczonym czasie wykona określone zadanie. W 98% przypadków zadaniem jest obliczenie jakieś liczby, czy zbioru liczb będącej wynikiem/rozwiązaniem jakiegoś problemu.
Skoro programy w takich konkursach ostatecznie mają zwrócić tylko liczby będące wynikiem, to oznacza, że wszystko inne... grafika, wygląd programu, język narodowy interfejsu programu, a nawet język programowania w jakim program został napisany... to wszystko nie ma znaczenia, bowiem wszystko co ma program zrobić, to wypisać liczbę.
A co jest fajne w liczbach? To, że komputery świetnie je rozumieją, co z kolei oznacza, że można napisać programy, które automatycznie sprawdzają poprawność wyników zwracanych przez programy zawodników :)
Skoro programy zawodników mają być sprawdzane przez inne programy to oznacza, że reguły prezentacji wyników muszą być bardzo jasno sprecyzowane... bowiem automatyczny sędzia - program, o ograniczonych zdolnościach, nie koniecznie musi wiedzieć, że 3.0 to tyle samo co 3. Dlatego tak ważne jest zawsze zapoznanie się z informacją, w jakim formacie ma być wypisany wynik (bardzo często nawet liczba spacji i enterów pomiędzy liczbami może mieć znaczenie, więc trzeba być dokładnym ;) )
Zadania są naprawdę bardzo różne. Do rozwiązania niektórych wystarcza wiedza z zakresu 1 klasy szkoły podstawowej, w przypadku tych najtrudniejszych... nie będę was straszył :P
Przykład prostego zadania:
Napisz program, który otrzymując datę w formacie dd-mm-rrrr wypisze liczbę dni, jaka minęła od zadanej daty.
Co ważne, zadanie polega nie tylko na tym, by napisać program który potrafi odpowiedzieć ile dni minęło np. od 1 maja 1984 roku. W takim przypadku wystarczyło by napisać program który zwraca pojedynczą liczbę. Trudność w takich zadaniach polega na tym, że nie wiemy o jaką datę program sprawdzający nasz program poprosi. Może być to każda data, która mieści się w zakresie danych, które zostały w treści przedstawione. W powyższym przykładzie nie zostało to napisane, ale oprócz treści opisowej, obok zadania powinny znajdować się informacje z jakiego zakresu danych nasz program może być odpytywany, np. "program powinien zwracać prawidłową odpowiedź dla wszystkich dat XX wieku". Mając taką informacje dostajemy tak naprawdę jednocześnie podpowiedź, że można olać większą część dat, w tym także np. obsługę dat przed rokiem 0.
Tego rodzaju zadania można rozwiązywać m.in. w serwisie http://pl.spoj.com/ :)
Też mam tam konto i pomimo tego, że od prawie 2 lat nic tam nie robiłem (o... tutaj jest moje konto), to gwarantuje wam, że gdybym tylko teraz nie zajmował się czymś innym, to nadal z chęcią poświęcałbym długie godziny na rozwiązywanie kolejnych zadań :)
Generalnie rzecz biorąc, najlepsze jest to, że takie zadania swoją specyfiką są naprawdę identyczne w stosunku do tych, które faktycznie można spotkać na różnego rodzaju innych konkursach, takich jak na potyczkach algorytmicznych :)
Prawdę mówiąc, cały ten wpis powstał tylko po to, by na koniec móc umieścić film, który kiedyś nakręciłem. Trwa on trochę, nie śpieszyłem się jak go nagrywałem, ale za to starałem się przekazać wiedzę, która innym może umożliwić łatwy start ;)
no i na koniec jeszcze jedno...
Według mnie, prawdziwy programista to taki, który raz na jakiś czas staje przed problemem nietrywialnym, wymagającym zdolności matematycznych i algorytmicznych i to nie jest dla niego przeszkodą nie do przejścia :) Język programowania dla niego to tylko technologia, wie, że to w matematyce tkwi sekret optymalizacji.
Algorytmice poświęcałem się szalenie intensywnie przez 3 lata swojego życia (2 klasa liceum, w 3 klasie algorytmy na chwilę odpuściłem by skupić się na maturze, natomiast ze zdwojoną mocą powróciłem do nich na 1 i 2 roku studiów).
Poświęcałem im tak dużo czasu, że moja ówczesna dziewczyna non stop miała do mnie pretensje, że siedzę tylko na "tymi głupimi zadaniami", które "i tak mi nic nie dadzą". Ja wiedziałem swoje :)
Z tamtą dziewczyną się rozstałem, a parę miesięcy później na rozmowie kwalifikacyjnej w Operze, dostałem 3 pytania. Wszystkie dotyczyły zadań algorytmicznych :)
Gdy usłyszałem dwa pierwsze pytania, to niemalże nie umiałem wytrzymać ze śmiechu :) Zadania te były bowiem bardzo podobne do zadań, które już wcześniej rozwiązywałem. Były inne, ale gdy miałem podać odpowiedź, to będąc aż tak pewnym swojej wiedzy, zapytałem się aż, które utrudnienie związane z optymalizacją rozwiązania mam dodatkowo zastosować.
W praktyce muszę przyznać, że tego typu pytania na rozmowie nie były na wyrost. W przyszłości nie raz potem się okazało, że bez podstawowej wiedzy algorytmicznej, w niektórych projektach ani rusz... ;)
Tym sposobem, chciałbym dzisiaj poruszyć temat konkursów algorytmicznych, którym przez pewien okres poświęcałem naprawdę bardzo dużo czasu w swoim życiu.
Ile trzeba umieć, by zacząć startować w konkursach algorytmicznych?
Programowanie jest podobno trudne, a skoro są robione jakieś konkursy dla programistów, to łatwo można wysnuć tezę, że pewnie biorą udział w takich konkursach tylko najlepsi z najlepszych.Jeżeli należysz do osób, które tak myślą, to jesteś po części w dużym błędzie!
Owszem, konkursu algorytmicznego nie wygra na pewno żaden amator. Reguły takich zawodów są bardzo ściśle określone i w bardzo brutalny sposób są weryfikowane twarde umiejętności zawodników.
Nie każde zawody są tworzone z myślą o mistrzach świata ;)
Nic jednak nie stoi na przeszkodzie, by w pierwszych fazach takich konkursów udział wzięły osoby, które dopiero co rozpoczęły swoje przygody z programowaniem. Wygrać pewnie nie wygrają, ale skoro weryfikacja umiejętności takich zawodników odbywa się automatycznie to znaczy, że koszt oceny takiej osoby, jest praktycznie pomijalny.
Jest naprawdę dużo stron, na których można znaleźć zadania, które polegają na zaprogramowania dosłownie prostej procedury dodawania, czy obliczenia średniej dwóch liczb - serio :)
Automatyczny sędzia i typ zadań
Największą trudnością w takich zawodach dla początkującej osoby jest tak naprawdę wdrożenie się i zrozumienie reguł takich zawodów i nauczenie się specyficznego sposobu pisania programów pod "automatycznego sędziego".Na co dzień w życiu gdy piszemy jakiś program, piszemy go w taki sposób, by wygodnie się z niego nam korzystało. Dlatego jesteśmy przyzwyczajeni, że dobry program użytkowy ma obsługę zarówno myszki jak i umożliwia obsługę za pomocą klawiatury.... no i oczywiście korzysta z ekranu wyświetlając odpowiednie komunikaty, czy wyniki swojej pracy.
Programowanie programów z GUI nie ma nic wspólnego z konkursami algorytmicznymi.
Konkursy algorytmiczne to raczej tworzenie prostych programów konsolowych
Konkursy algorytmiczne mają na celu sprawdzenie umiejętności stworzenia programu, który w wyznaczonym czasie wykona określone zadanie. W 98% przypadków zadaniem jest obliczenie jakieś liczby, czy zbioru liczb będącej wynikiem/rozwiązaniem jakiegoś problemu.
Skoro programy w takich konkursach ostatecznie mają zwrócić tylko liczby będące wynikiem, to oznacza, że wszystko inne... grafika, wygląd programu, język narodowy interfejsu programu, a nawet język programowania w jakim program został napisany... to wszystko nie ma znaczenia, bowiem wszystko co ma program zrobić, to wypisać liczbę.
A co jest fajne w liczbach? To, że komputery świetnie je rozumieją, co z kolei oznacza, że można napisać programy, które automatycznie sprawdzają poprawność wyników zwracanych przez programy zawodników :)
Skoro programy zawodników mają być sprawdzane przez inne programy to oznacza, że reguły prezentacji wyników muszą być bardzo jasno sprecyzowane... bowiem automatyczny sędzia - program, o ograniczonych zdolnościach, nie koniecznie musi wiedzieć, że 3.0 to tyle samo co 3. Dlatego tak ważne jest zawsze zapoznanie się z informacją, w jakim formacie ma być wypisany wynik (bardzo często nawet liczba spacji i enterów pomiędzy liczbami może mieć znaczenie, więc trzeba być dokładnym ;) )
Rodzaje zadań
Zadania są naprawdę bardzo różne. Do rozwiązania niektórych wystarcza wiedza z zakresu 1 klasy szkoły podstawowej, w przypadku tych najtrudniejszych... nie będę was straszył :P
Przykład prostego zadania:
Napisz program, który otrzymując datę w formacie dd-mm-rrrr wypisze liczbę dni, jaka minęła od zadanej daty.
Co ważne, zadanie polega nie tylko na tym, by napisać program który potrafi odpowiedzieć ile dni minęło np. od 1 maja 1984 roku. W takim przypadku wystarczyło by napisać program który zwraca pojedynczą liczbę. Trudność w takich zadaniach polega na tym, że nie wiemy o jaką datę program sprawdzający nasz program poprosi. Może być to każda data, która mieści się w zakresie danych, które zostały w treści przedstawione. W powyższym przykładzie nie zostało to napisane, ale oprócz treści opisowej, obok zadania powinny znajdować się informacje z jakiego zakresu danych nasz program może być odpytywany, np. "program powinien zwracać prawidłową odpowiedź dla wszystkich dat XX wieku". Mając taką informacje dostajemy tak naprawdę jednocześnie podpowiedź, że można olać większą część dat, w tym także np. obsługę dat przed rokiem 0.
Zadania treningowe
Piszę niby cały czas o konkursach, ale prawda jest taka, że wcale nie trzeba się zmagać z innymi w trybie konkursowym, bowiem można brać udział w czymś co przypomina raczej "zawody stałe". W dużym skrócie, jest po prostu duża pula zadań, od bardzo łatwych, do bardzo trudnych.... i można je robić sobie po kolei, w dowolnej kolejności. Bez limitów czasowych na napisanie programu, bez stresu... dla czystej wiedzy i satysfakcji :)Tego rodzaju zadania można rozwiązywać m.in. w serwisie http://pl.spoj.com/ :)
Też mam tam konto i pomimo tego, że od prawie 2 lat nic tam nie robiłem (o... tutaj jest moje konto), to gwarantuje wam, że gdybym tylko teraz nie zajmował się czymś innym, to nadal z chęcią poświęcałbym długie godziny na rozwiązywanie kolejnych zadań :)
Generalnie rzecz biorąc, najlepsze jest to, że takie zadania swoją specyfiką są naprawdę identyczne w stosunku do tych, które faktycznie można spotkać na różnego rodzaju innych konkursach, takich jak na potyczkach algorytmicznych :)
Małe szkolenie video
Prawdę mówiąc, cały ten wpis powstał tylko po to, by na koniec móc umieścić film, który kiedyś nakręciłem. Trwa on trochę, nie śpieszyłem się jak go nagrywałem, ale za to starałem się przekazać wiedzę, która innym może umożliwić łatwy start ;)
no i na koniec jeszcze jedno...
Dlaczego warto interesować się konkursami algorytmicznymi?
Uważam, że są programiści i klepacze kodu. Klepacz kodu to w moim mniemaniu taki programista, który niby normalnie programuje, ale to co robi równie dobrze może być wykonane przez zastąpienie go skończoną liczbą studentów.Według mnie, prawdziwy programista to taki, który raz na jakiś czas staje przed problemem nietrywialnym, wymagającym zdolności matematycznych i algorytmicznych i to nie jest dla niego przeszkodą nie do przejścia :) Język programowania dla niego to tylko technologia, wie, że to w matematyce tkwi sekret optymalizacji.
Algorytmice poświęcałem się szalenie intensywnie przez 3 lata swojego życia (2 klasa liceum, w 3 klasie algorytmy na chwilę odpuściłem by skupić się na maturze, natomiast ze zdwojoną mocą powróciłem do nich na 1 i 2 roku studiów).
Poświęcałem im tak dużo czasu, że moja ówczesna dziewczyna non stop miała do mnie pretensje, że siedzę tylko na "tymi głupimi zadaniami", które "i tak mi nic nie dadzą". Ja wiedziałem swoje :)
Z tamtą dziewczyną się rozstałem, a parę miesięcy później na rozmowie kwalifikacyjnej w Operze, dostałem 3 pytania. Wszystkie dotyczyły zadań algorytmicznych :)
Gdy usłyszałem dwa pierwsze pytania, to niemalże nie umiałem wytrzymać ze śmiechu :) Zadania te były bowiem bardzo podobne do zadań, które już wcześniej rozwiązywałem. Były inne, ale gdy miałem podać odpowiedź, to będąc aż tak pewnym swojej wiedzy, zapytałem się aż, które utrudnienie związane z optymalizacją rozwiązania mam dodatkowo zastosować.
W praktyce muszę przyznać, że tego typu pytania na rozmowie nie były na wyrost. W przyszłości nie raz potem się okazało, że bez podstawowej wiedzy algorytmicznej, w niektórych projektach ani rusz... ;)
24 czerwca 2013
Programista vs. gwiazda rock'a
Jeżeli jeszcze nie widziałeś tego filmu, to zdecydowanie powinieneś to nadrobić.
Filmik ten nie jest nowy, ale tak bardzo mi się podoba, że postanowiłem go tutaj wstawić, tym bardziej, że chciałem "odświeżyć" trochę tego bloga :) Jeżeli jeszcze nie wyrzuciłeś bloga z RSSów, to szczerze podziwiam. Jednak jeżeli miałeś taki zamiar, to radzę się wstrzymać, bowiem moje ostatnie pół roku było najbardziej programistyczne w całym moim życiu.
Z pewnych przyczyn nie mogłem tychże rzeczy opisywać na bieżąco, ale sądzę, że już wkrótce blog powinien odżyć :) Parę osób wie o co chodzi, na razie proszę Was jeszcze o dyskrecję ;)
Filmik ten nie jest nowy, ale tak bardzo mi się podoba, że postanowiłem go tutaj wstawić, tym bardziej, że chciałem "odświeżyć" trochę tego bloga :) Jeżeli jeszcze nie wyrzuciłeś bloga z RSSów, to szczerze podziwiam. Jednak jeżeli miałeś taki zamiar, to radzę się wstrzymać, bowiem moje ostatnie pół roku było najbardziej programistyczne w całym moim życiu.
Z pewnych przyczyn nie mogłem tychże rzeczy opisywać na bieżąco, ale sądzę, że już wkrótce blog powinien odżyć :) Parę osób wie o co chodzi, na razie proszę Was jeszcze o dyskrecję ;)
Subskrybuj:
Posty (Atom)