Java Centered Design

30 komentarzy

Tło

Próbując zdobyć papierek inżyniera i tę odrobinę sensownej wiedzy, którą można znaleźć na studiach z informatyki (Politechnika Wrocławska) dotarłem do semestru piątego i kursu Projektowanie Oprogramowania. Jest to kurs z tych ciekawszych, bo w tym semestrze mam jeszcze np. Technologie Przetwarzania Mediów Cyfrowych (montowaliśmy reklamę radiową oraz słuchowisko, później robiliśmy retusz zdjęcia, a teraz fotomontaż - tak WTF?!), czy Informatyczne Systemy Sterowania (kurs dość zaawansowany, a więc zupełne przeciwieństwo TPMC, z tym, że wiedza przyda się może kilku(nastu) osobom).

Dwa miesiące pisania sztucznej specyfikacji i rysowania diagramików UML utwierdziło mnie jeszcze bardziej w przekonaniu, że nigdy w przyszłości nie będę chciał tego robić. Nasza specyfikacja na tym etapie obejmuje jedynie malutki wycinek systemu, a poświęciliśmy na jej przygotowanie kilka dni roboczych. I nie – nie projektujemy systemu bankowego, a uproszczoną księgarnię internetową. I tak naprawdę skupiamy się tylko na procesie składania zamówienia.

W tej chwili dotarliśmy do etapu kiedy już trzeba ogarnąć architekturę aplikacji. Co prawda większość studentów zaprojektuje zapewne jakiś tam sobie diagram komponentów, sekwencji i co tam jeszcze obejmuje ten etap kursu, kompletnie nie interesując się jak to będzie współgrało z frameworkiem/technologią którą później zastosują (narzucona z góry Java). Ja jednak tak nie potrafię. Zacząłem więc szukać Java'owego frameworka do aplikacji webowych, który później zastosujemy. I w tym momencie szczęka mi opadła.

Każda potwora...

Na początku semestru, kiedy dowiedziałem się, że będziemy projektować, a później w małej części kodować, aplikację webową poszedłem do prowadzącego spytać się czy jest z góry narzucony język. Dowiedziałem, się że prowadzący proponuje Javę, ale że nie – jeśli ktoś z nas chce coś innego, to może spróbować. Choć prowadzący nie polecał takich prób (szczególnie jak usłyszał o PHP :). Wtedy odpowiedziałem, że w trakcie semestru się zastanowię, bo dobrze znam symfony i byłoby mi łatwiej, a nie słyszałem o żadnym sensownym i otwartym rozwiązaniu w Javie. Prowadzący odpowiedział, że jest sporo dobrych i otwartych frameworków. Zrobiło mi się wtedy głupio, bo moja wypowiedź nie była poparta żadnymi głębszymi doświadczeniami. Po prostu – taki stereotyp Javy.

W trakcie semestru uświadomiłem sobie, że ten rodzaj betonowej specyfikacji nijak nie pasuje do symfony, ani Railsów, czy Django, które w większym/mniejszym stopniu znam. Że jestem zbyt słaby w UMLu, aby przenieść magię tego frameworka, do tych wszystkich diagramów, które musimy stworzyć. Postanowiłem więc się nie wyłamywać z tłumu i jak wszyscy pozostać przy Javie.

Wczoraj zacząłem research w poszukiwaniu odpowiedniego frameworka. Przejrzałem wiele stron na wiki i nieliczne porównania. Stwierdziłem, że najlepiej prezentuje się Spring 3. Został nieźle oceniony w porównaniu, a do tego w Google'ach potrafiłem znaleźć coś co przypominało stronę nowoczesnego projektu, a nie przedpotopowej, zapomnianej kobyły.

Przyzwyczajony jestem do świetnej dokumentacji typu "Get started" (sf, railsy, django), którą można zlokalizować na stronie domowej projektu w minutę, a która trzyma mnie za rączkę, aż do momentu kiedy jestem w stanie korzystać ze słabej (w przypadku symfony – bardzo słabej) dokumentacji API i tutorialów związanych z bardziej zaawansowanymi rozwiązaniami.

Tego samego szukałem na stronie Springa. Po 5 minutach wiedziałem już, że tak prosto nie będzie. Autorzy frameworka stworzyli 800 stronicowy podręcznik, w którym jest pewnie opisane wszystko, o czym 100 jego twórców myślało przez ostatnie dwa lata. Stworzyli też dziesiątki stron, w których chwalą się jakie to fajne rozwiązania wprowadzili do swojego dziecka. Nie znalazłem na stronie domowej projektu jednak nic dotyczącego Springa 3 (ta wersja ma już ponad rok) co pomogłoby mi go uruchomić.

Postanowiłem jednak się nie poddawać i rozpocząłem przeszukiwanie nie tylko strony domowej, ale całego internetu. W ciągu dwóch godzin trafiłem w kilka miejsc, jednak... sami popatrzcie – tu, tu, tu, tu (nawet nieźle), tu, czy tu. Jednym słowem wielki śmietnik. Postanowiłem spróbować z innym frameworkiem.

Kolejny, któremu chciałem się przyjrzeć, to JavaServer Faces. Tutaj było jeszcze gorzej. W Google'ach nie potrafiłem znaleźć nawet czegoś co można by było nazwać "jednolitą stroną projektu". Nie wiem jaka jest geneza (i już mnie to nie interesuje) tego frameworka, ale moim zdaniem to wręcz niepoważne. Polecam obejrzeć przykładowe strony, które są w pierwszej 10tce w Google'ach.

Po drodze był też JBoss. Strona na którą trafiłem wyglądała jak strona korporacji, więc po 5 minutach dałem sobie spokój. Żal coś pisać w tym temacie.

Pod lupę wziąłem też Strutsa. Najpierw się załamałem, bo strona projektu przypomina typową Apache'ową. Trzeba jednak być twardym. Documantation -> Get started -> Tutorials -> Getting Started i jest! Coś znalazłem. Nie jest to co prawda poziom znanych mi frameworków, ale daje radę. Jednak ścieżka jaką musiałem przejść żeby trafić do interesującej mnie strony bawi mnie dalej :).

Na koniec wróciłem zrezygnowany jeszcze raz do Springa i znalazłem cykl artykułów dla początkujących oraz Spring Roo. I choć na początku Spring mnie załamał, to w tej chwili wraz ze Strutsem i jedną sensowną książką do JSF jest moim ostatnim punktem zaczepienia w tym temacie.

... znajdzie swojego adoratora

Wspomniałem na początku, że zrobiło mi się głupio kiedy, nie mając podstaw, powiedziałem, że nie znam żadnego sensownego javowego frameworka. Zasiadając do poszukiwań szczerze wierzyłem w to, że skoro są miłośnicy Javy, wśród których są przecież świetni programiści, to musi istnieć jakaś sensowny projekt związany z sensownym frameworkiem.

Teraz już wiem – ze spokojem mogę mówić, że nie znam sensownego projektu. Nie mogę za to nic powiedzieć o samych frameworkach, bo aby je ocenić należy ich użyć. Możliwe, że każdy z frameworków, któremu się przyglądałem jest świetny. Ich autorzy zapomnieli jednak, że nie na kodzie i technicznym manualu Świat się kończy.

Zawsze drażnili mnie (a może bawili) programiści twierdzący, że taki stan projektów im odpowiada. To moja wina, że nie potrafię znaleźć interesujących mnie informacji. Moja wina, że nie zamierzam przeczytać 400 stron w książce aby choć w najprostszym zakresie potrafić użyć narzędzia. Moja wina, że za szybko się zniechęcam – generalnie jestem słabym programistą i nie umiem szukać oraz czytać ze zrozumieniem.

Dlatego tak bardzo zainteresowała mnie idea UCD – projektowania zorientowanego na użytkownika. Choć swoją popularność zdobyła głównie w związku z projektowaniem interfejsów, bądź ogólniej – interakcji człowieka z komputerem, to lubię ją aplikować do każdej sytuacji kiedy istnieje jakiś produkt i jego odbiorcy. Do nikomu niepotrzebnych usług, które według ich twórców są rewolucją, przedmiotów codziennego użytku, które przyprawiają nas o ataki szału, czy... no właśnie – nie przychodzi mi żaden produkt, przy opracowywaniu którego programiści nie mieliby swojego destruktywnego udziału.

Programiści i innego rodzaju osobniki, które pojęły sposób działania komputera (sieciowcy, administratorzy) to najbardziej zakute łby na naszej planecie. Wyłączam tutaj polityków, których ciężko ocenić, bo nigdy nie wiadomo kiedy kłamią. To natura informatyki, ze wszystkich dziedzin, najdalej odbiegła od natury człowieka. Dlatego osoby trudniące się pojmowaniem tej nauki są najbardziej aspołeczne. Nie mam tu na myśli sposobu ubierania się (bądź nie), zachowywania, czy poruszanych tematów rozmów. Mam na myśli sposób myślenia i wnioskowania.

Java Centered Design

Wracając do Javy od której to zacząłem. Jest to najbardziej odczłowieczony język jaki dany mi było poznać. Jego społeczność nie wywołuje we mnie żadnych uczuć. Nawet nie wiem czy istnieje. Nie znam żadnego programisty Javy, który by ten język lubił. Odnoszę wrażenie, że w ogóle wszyscy z niego korzystający zamknęli się w swoich bankowych, księgowych i ubezpieczeniowych gettach. Zaraz, zaraz. Przecież to właśnie te najbardziej nieprzyjazne człowiekowi systemy...

Oczywiście Java wpłynęła też na frameworki, które w niej powstały. Tak jak pisałem, znalazłem wiele artykułów napisanych przez autorów Springa ukazujących jakie wspaniałe wzorce projektowe zastosowali, jakimi dobrymi są programistami, jaki wspaniały techniczny podręcznik napisali. Zapomnieli jednak co jest wyznacznikiem jakości ich pracy.

Jest takie powiedzenie w piłce nożnej, że za podanie odpowiada podający, a nie jego odbiorca. Tak samo jest w w przypadku dokumentacji frameworków. To nie ja jestem głupi jeśli nie potrafię znaleźć interesujących mnie informacji i nie rozumiem tego co napisaliście. To Wasza wina. Ja oczywiście mogę szybciej pobiec do piłki i może jakimś cudem zdążę, ale tak naprawdę to wyście skopali swoją robotę tak beznadziejnie podając.

Dzisiejsza walka jeszcze głębiej utwierdziła mnie w przekonaniu, że Java jest smutna, zakuta i nieprzyjazna użytkownikowi końcowemu. Będę się dalej trzymał jak najbliżej frontendowych technologii webowych, aby mieć jak najbliżej do użytkownika końcowego. Dzięki temu mam nadzieję, że nigdy nie zapomnę dla kogo tak naprawdę co jest wyznacznikiem jakości mojej pracy. Zadowolenie użytkownika końcowego.

Przenosiny cz. 2

1 komentarz

Tych co nie czytali części poprzedniej zapraszam tu:

Akt trzeci - czekanie

Tak więc od początku stycznia czekaliśmy na otwarcie Systemu, by móc złożyć podanie. Przypomnę, że za załatwianie sprawy z wiadomych względów zabraliśmy się na półtora miesiąca przed sesją. I... ku naszej niebywałej uciesze, jakoś tuż przed końcem semestru System uruchomiono. Czad po prostu.

Akt czwarty - podanie

Cóż - nie ma co marudzić, zabieramy się za wypełnianie podania. Wpisuję miasto, reszta moich danych jest. Wybieram kierunek na który chcę się przenieść. Do wyboru mam ciągi w stylu P0-W08-INF---ST-I-WRO------PWR1-DWU. Uroczo. Szukam pomocy, znajduję coś niestety i tak muszę zgadywać. Wybieram jak cytowałem, w końcu I musi oznaczać pierwszy rok. Teraz pora uzupełnić dorobek. Tutaj sprawa komplikuje się jeszcze bardziej. Mam przepisać wszystkie kursy (ponad 30)? Co to są te dziwaczne pola CNPS, ZZU? I które z 15 pól na kurs mam uzupełniać? Na te pytania jednak nie znajduję odpowiedzi, więc uzupełniam wszystko według uznania. I tak przepisanie indeksu zabiera mi ponad 2h.

Wypada mi jeszcze sparować kursy, jednak dla IZetu pojawiają mi się jakieś dziwactwa, których wiem, że nie mieli. Uznaję to za błąd systemu i umawiam się ze znajomym przy dziekanacie dnia następnego.

Akt piąty - podanie drugie

Jako że już blisko sesji, wystajemy godzinkę pod dziekanatem. Poraża nas jednak kultura ludzi. I tu pora na dygresję o kolejkach na Elektronice.

Otóż kolejka do dziekanatu na Elektronice wygląda jak kulka plasteliny ciśnięta o ścianę. Wynika to głównie z tego, że jakiś mózg wymyślił, że do dziekanatu, gdzie jest 8 stanowisk, są jedne drzwi i do tego nieprzezroczyste. Jako że stanowiska są przydzielone do studentów na stałe, niektórzy, udając że idą do stanowiska do którego nie ma kolejki, wchodzą do środka, pomijając ogromną kolejkę stojacą pod drzwiami, po czym stają w kolejce już do określonego stanowiska. W praktyce wygląda to tak, że 10 osób stoi pod drzwiami i nie może wejść (bo są wywalani), a w środku, do interesującego ich stanowiska jest cały czas tyle samo ludzi. Nie muszę wspominać, że ja oczywiście muszę swoje sprawy załatwiać przy stanowisku do którego zawsze jest najwięcej ludzi :).

Na IZecie jednak za drzwiami jest tylko jedno okienko, więc problem nie istnieje. I tak po godzinie grzecznie odstanej w kolejce wyjaśniamy naszą sprawę bardzo przemiłej pani siedzącej w środku. Ona wpisuje moje nazwisko po czym z uśmiechem na twarzy oznajmia, że wybrałem nie ten kierunek. Z listy powinienem wybrać taki z Ii, a nie samym I. Uh - prawie bym się przeniósł na nieistniejący kierunek. Cóż za ulga. Przy okazji dowiedzieliśmy się, że należy wpisać tylko wiodące kursy.

Myśląc że wiemy już wszystko spieszymy do jakiegoś wygodnego miejsca, aby usiąść i ponownie uzupełnić podanie. Wpisałem miasto, wybrałem dobry kierunek, zacząłem uzupełniać kursy, po czym chciałem je sparować. Uh... Znowu fail - nie wiem które z którymi połączyć (mniejsza z tym dlaczego). No to do dziekanatu.

Tym razem już bez kolejki wchodzimy do środka. Pani cieszy się niezmiernie że widzi nas ponownie jeszcze tego samego dnia. Patrzy na nasze podania u siebie w systemie, po czym stwierdza, że System nas pokonał i musi to zrobić za nas. No dobrze - klikamy opcję "przekaż" przy podaniu i zostawiamy to Pani.

Akt szósty - podanie trzecie

Po dwóch dniach patrzę na status swojej sprawy, który zmienia się z "złożona" na "odrzucona". Odrzucona przez dziekana, powód "nie uzup. sem. real.". Patrzę w system na swoje kursy... Nie ma pola od którego skrót mógłby tak wyglądać. Domyślam się jednak, że dziekan oczywiście widzi inne nazwy pól u siebie. Kolega po wizycie w dziekanacie potwierdza moje przypuszczenia i już wiemy co trzeba douzupełnić. No to jeszcze raz - 1h na uzupełnienie podania. Przy okazji wychodzi, że kiedy uzupełnia się te pole, system zapomina kilka innych (z losową jednak częstotliwością). Podanie złożone, wydrukowane, zaniesione, zatwierdzone. A nie - nie tak szybko, Panie Piotrze. Okazuje się, że pismo pt. "różnice programowe" które musieliśmy zanieść wczęsniej do dziekana nie ma podpisu, bo to co na nim widnieje, to jakieś gryzmoły. Uroczo - 2h w kolejce i mam podpis. No to teraz czekam.

Po trzech dniach sprawa zmienia status ze "złożona" na "do rozpatrzenia". Już się cieszę, że coś poszło o krok dalej niż ostatnio. Kawałek niżej jednak widnieje status "brak decyzji", a jeszcze w jednym miejscu "decyzja prawomocna: tak". Eee... no jasne. U kolegi to samo. Postanawiamy jeszcze poczekać.

Tutaj dygresja apropo zapisów na Elektronice, które wypadły właśnie w tym momencie. Jako że nie wiedziałem, czy całą sprawę uda mi się pozytywnie załatwić postanowiłem się zapisać na zajęcia, normalnie jakbym dalej studiował.

A po tygodniu postanawiamy zajrzeć do dziekanatu w sprawie naszych podań.

Akt siódmy - indeksik

Wystajemy znowu swoje w kolecje. W środku już o nas zapomniano, więc grzecznie tłumaczymy z czym przychodzimy. Pani zagląda do podania kolegi i okazuje się, że dobrze że przyszliśmy. Podczas przerabiania podania system wygenerował błąd i podanie zostało zapomniane. A skąd status "do rozpatrzenia"? Tego nie udaje nam się dowiedzieć. "Klik" i podanie kolegi tym razem przechodzi - super, witamy Pana na naszym wydziale. Teraz pora na moje podanie. "Klik" - u Pana jest błąd. Musi Pan mieć przepisane wszystkie oceny do indeksu elektronicznego. Że co? Kolega nie ma, a jemu przeszło, dlaczego? Trzy razy spytałem i dowiedziałem się tylko, że ja muszę. Pani niestety teraz nie była tak miła, bo dorwała administratora Systemu i mu nawymyślała.

Wychodzę zniesmaczony, bo do tej pory moim prowadzącym udało się do tegoż indeksu (części Systemu) przepisać aż 3 oceny. Na 20... Że niby mam ich teraz do tego zmusić? No nic - łudzę się, że może ktoś to odgórnie zrobić. Idę do swojego dziekanatu - półtorej godziny w kolejeczce i dowiaduję się, że nie, nie ma takiej osoby. Idę jeszcze do sekcji informatycznej, gdzie od znajomego słyszę to samo. SUPER! Przy okazji dowiaduję się, że prowadzący mieli już jeden termin na załatwienie sprawy, ale prawie nikt tego nie zrobił, więc przedłużono im go do 7mego marca. Ekstra - na IZecie mam czas na załatwienie wszystkiego do 10tego. I jakoś nie wierzę, żeby wszyscy tego 7mego dotrzymali. Jedna osoba mnie oleje, zniknie na tydzień i nici z przenosiń.

Co więcej - abym mógł spokojnie popracować, jedyną alternatywą dla przeniesienia się jest wzięcie dziekanki. Na to termin też mam do 10tego marca. Więc jedna rzecz się przedłuży, a będę musiał normalnie studiować. Uroczo. Półtora miesiąca zabawy i nic nie załatwię.

Tak na koniec dzisiejszej części jeszcze krótko o wypełnianiu podania o urlop dziekański. Oczywiście wszystko w Systemie. Do uzupełnienia początkowy semestr urlopu i końcowy semestr urlopu. Niby wszystko jasne, ale zaraz - jak biorę urlop na jeden semestr to co wpisuję w końcowym? Ten sam co początkowy, czy następny? Nie dowiem się niestety metodą prób i błędów, bo System zezwoli nawet na wzięcie dziekanki rok temu i co więcej - nawet na wzięcie dziekanki cofającej - gdzie start > koniec ;).

Akt ósmy - pewna informacja

Część trzecia już za czas z góry nieokreślony :)

Przenosiny

6 komentarzy

Żyję.

To zdanie (albo raczej, jeśli dobrze pamiętam z liceum, jego równoważnik) jest dla mnie zdaniem przełomowym, bo nie udało mi się opublikować żadnego wpisu od października 2006. Co oznacza skromną, ponaddwuletnią przerwę i moją pozorną śmierć (nawet w mych oczach). Ale nic to - o tym (tzn. o powodach) kiedy indziej (bo pisać mam zamiar więcej), a teraz na temat.

Prolog

Na wstępie wypada mi przedstawić sytuację w jakiej znajdowałem się na początku całego dramatu (ma prolog i akty, to prawie jak dramat ;P - tylko chóru brakuje ;)

W roku pańskim 2007 zacząłem studia na Wydziale Elektroniki Politechniki Wrocławskiej, kierunek Informatyka. W teorii wymarzone - informatyczne, próg najwyższy i... i to chyba wszystko czym się kierowałem. A szkoda.

W roku pańskim 2008, w miesiącu styczniu, później lutym, później lipcu - mówiąc wprost - od prawie samego początku pierwszego roku - narzekałem. Studia informatyczne okazały się być matematyczno-elektronicznymi i o ile to pierwsze nie dziwi na pierwszym roku, a drugie też nie dużo mniej, to miałem obawy czy nie będzie tak do końca. Jednak na obawach się skończyło i zostałem na Wydziale Elektroniki.

W grudniu roku 2008 zapadła jednak decyzja - chcę się przenieść. Do wyboru miałem jeszcze dwie informatyki na PWR. Jedną na IZecie, a drugą na PPTcie. Wybór padł na IZet.

Cały obszerny wstęp dopełnia informacja o tym, że z semetru 4tego planowałem się przenieść na semestr drugi. Cała zabawa po to, abym mógł trochę więcej poświęcić się pracy przez następny rok (większość kursów zostanie mi mam nadzieję przepisana).

Akt pierwszy - rozpoczynamy

Pierwszym krokiem było powiadomienie rodziców - ok - podołali :). Drugim - znajomych i tu niespodzianka - jeden z moich lepszych kumpli jeszcze z czasów gimnazjum też chce się przenieść (kierunek macierzysty: AiR na EKA). Informacja ta dodała mi otuchy, bo to zawsze łatwiej.

Krokiem następnym była wizyta u bardzo zachwalanego przez znajomych z IZetu dziekana do spraw dydaktycznych - dr. Janusza Martana. Pierwszy raz byliśmy u niego jakoś na początku stycznia i datę tę można uznać za początek procesu Przenosin. Proces rozpoczęliśmy tak wcześniej (sesja od połowy lutego), aby przed sesją wszystko załatwić - wiadomo - kilometrowe kolejki, itd. Dziekan rzeczywiście okazał się być bardzo miłym i konkretnym człowiekiem. Wszystko (a przynajmniej tak się nam zdawało) nam wytłumaczył. Plan miał wyglądać następująco:

  1. Tworzymy i przynosimy "różnice programowe" - tabelkę kursów które nam się pokrywają,
  2. Czekamy na otwarcieu elektronicznego, internetowego systemu EdukacjaCL,
  3. Składamy podanie o przeniesienie,
  4. Przynosimy wydrukowane podanie (sic! - jest przecież w systemie),
  5. Dziekan akceptuje, bo czemu by nie,
  6. Hurraa!! krzyczymy i idziemy się nawalić jak zwierzęta. Tfu... studenci.

Nic prostszego, prawda? :) Ja nie byłem tak optymistycznie nastawiony, a to dlatego...

Akt drugi - System

Od początku kiedy mówiłem znajomym o przenosinach, ci ostrzegali mnie przed Systemem. System ów zwany pieszczotliwie Edukacją jest (a w zasadzie miał być) elektronicznym dziekanatem, a także systemem rekrutacyjnym i czym tam jeszcze. Nas interesowało to pierwsze. Politechnika wdraża go z oporami od niepamiętnych czasów, a teraz - w przerwie zimowej (nigdy nie pojmę dlaczego zimowej, a nie 5x dłuższej letniej :O?!?!) postanowiła wprowadzić go metodą małych kroczków - kroczków kangura giganta. Od teraz - wszystko co chcecie załatwiać w dziekanacie drodzy studenci możecie załatwić w portalu... po czym musicie to do nas przynieść i tak. Aha - to nic że w systemie nie ma jeszcze tego podania - złożysz je za pół roku. Czasy załatwiania spraw oczywiście się skrócą, pół roku temu znajomy przeniósł się w dwa dni, a my na pewno załatwimy to szybciej.

Sam System tworzony jest przez notowaną na giełdzie spółkę Sygnity SA (gdzie pewnie pracuje setka mściwych, byłych studentów Politechniki ;)). System jest bardzo sprawny - prawie jak Windows - uważaj co robisz, bo każda źle podjęta decyzja oznacza nieodwracalne w skutkach błędy. I tak - nie cofaj się do poprzedniej strony, bo dostaniesz komunikat o błędzie. Uzupełnij każde wymagane pole w podaniu zgodnie z przeznaczeniem. Niestety to które pola są wymagane oraz to jakie jest ich przeznaczenie miej lub bardziej jasne jest... Ee... Nie wiem - tego nie wie nikt. Od pań w dziekanatach, po dziekanów oraz po dokumentację systemu, która nie istnieje (piszę to z premedytacją, bo poradnik dla samobójców który jest dostępny raczaj się nie przydaje).

Itd., itd... mógłbym marudzić dalej, ale ważne jest tylko to, że wiedziałem, że muszę wypełnić wszystko co wymagane, a jak o czymś zapomnę/pomylę się/nie będę wiedział, to dowiem się o tym jak będę całe podanie (2h pracy) uzupełniać ponownie, bo nie da się podania cofnąć i douzupełnić.

Akt trzeci - czekanie

Był początek stycznia kiedy zaczęliśmy czekać na otwarcie systemu... już jutro :)