Autor: Piotr Wachulec

Operacja Frontend + CMS cz. 1

Cześć!

Zgodnie z wcześniejszą zapowiedzią, bierzemy się za tzw. mięso. Czas się wziąć za przygotowanie nowego szablonu strony. Może wydawać się to troszkę śmieszne, ale jakoś dawno nie miałem okazji pogrzebać nic więcej w szeroko rozumianym froncie, więc drobna okazja właśnie się do tego nadarzyła. Jakie to ma plusy?

Nie ma co zwlekać, czas się wziąć za robotę!

Stos technologiczny

Od najniższego poziomu abstrakcji do najwyższego.

  1. Treść – oczywiście sama zawartość  zostanie opisana przy pomocy języka znaczników HTML5. Jest to standard w dzisiejszym Internecie i choćby dlatego warto to znać. Szczególną uwagę przyłożę do stosowania znaczników semantycznych. Pozwalają one na wyszczególnienie konkretnych fragmentów strony, co niesie ze sobą wiele korzyści. Przede wszystkim pozwala na usystematyzowanie zawartości strony, po drugie optymalizuje stronę pod względem wyszukiwarek. Ponadto sam format jest czytelniejszy dla tworzącego dokument. Należy zwrócić uwagę, aby oddzielić poszczególne warstwy od siebie. W dokumencie HTML nie możne znaleźć się osadzony styl CSS lub kod JS (przynajmniej nie powinien, jest to nieeleganckie, a my jesteśmy dżentelmenami :)). Dokument HTML z definicji ma za zadanie tylko i wyłącznie opisywać strukturę dokumentu, a nie jego wygląd. Do opisu wyglądu służą arkusze, które muszą znaleźć się w osobnych plikach.
  2. Wygląd – oczywiście będzie królował CSS3 i co do tego nie ma żadnych wątpliwości. CSS w wersji 3. daje bardzo dużą pulę narzędzi, które umożliwiają dynamiczne generowanie wyglądu strony. Dawniej wszystko się rysowało i wstawiało jako zdjęcia – cienie, ramki itd. Pamiętam nawet korzystałem z programu, który generował „fajne” przyciski… Dzisiaj patrzę na to z pożałowaniem… Na szczęście cały czas się rozwijamy! Wcześniej wspomniałem też o odizolowaniu warstwy dokumentu i wyglądu. Dzięki strona będzie złożona z łatwo wymienialnych modułów. Bardzo fajną analogią jest gniazdko zasilające w ścianie i urządzenia elektryczne. Łączą się ze sobą ściśle ustalonym interfejsem a jednocześnie są od siebie niezależne. Drugą bardzo ważną rzeczą dostarczoną przez CSS3 są tak zwane siatki (grid). Przyda się to przy implementacji responsywności strony, ale o tym niżej. Przy okazji nie będę korzystał z żadnych preprocesorów – mam założenie zagłębienia się w podstawy.
  3. Interakcja – JavaScript. Język, w którym budowane są dzisiaj całe serwisy, ale ja postaram się, aby po wyłączeniu obsługi JavaScript strona dalej zachowywała swoje funkcjonalności. Podziękujcie za to Krzaqowi – rozmawiał o tym z Maciejem Aniserowiczem w DevTalku z laureatami DSP. A postaram się to przetestować m. in. w takiej przeglądarce, którą zwą Elinks. Poniżej próbeczka:
  4. Obsługa treści – stary dobry WordPress (chociaż co do tego, czy dobry to zdania są podzielone). Ja używam i nie narzekam. Wychodzę z założenia, że trzeba sobie życie ułatwiać, a nie utrudniać. Dla mnie ten CMS jest wystarczający i bardzo ułatwia codzienną pracę z blogiem. Nie mam jakiś specyficznych wymagań co do funkcjonalności. Poza tym nawet jeżeli będę kiedyś potrzebował coś szczególnego, to sobie dopiszę wtyczkę 🙂 No właśnie, przy okazji WordPressa trzeba wspomnieć o PHP. Został on w nim stworzony, więc nie uniknę styczności z tym językiem. Podobno w wersji 7.x jest całkiem fajny 🙂 A no i najważniejsze – szablon musi być zbudowany zgodnie z API WordPressa.
  5. Reszta świata – postaram się nie korzystać z żadnych frameworków czy bibliotek. Chodzi o to, żeby poznać się z podstawami technologii. Czysty JS i PHP, czysty CSS bez stosowania preprocesorów (LESS, SASS, SCSS). Po prostu nie. Co najwyżej skorzystam z Grunta albo Gulpa do minifikacji plików. No i najważniejsze – Git. Kod będzie dostępny u mnie w repozytorium. Przy okazji potrenujemy sobie zabawy z tym systemem kontroli wersji. Nad projektem graficznym będą czuwały zasady Material Design.

Podsumowanie

O tak, zaczynamy powoli bawić się w tak zwane mięsko. Wypisałem podstawowy stos technologiczny, który swoją drogą nie jest zbyt wyszukany, ale taki ma być. Myślałem, że więcej  uda mi się opisać w tym wpisie, jednak jak sobie podsumowałem wszystko, to wyszło bardzo dużo zagadnień. Dlatego podzielę ten wstęp na kilka części. W następnej odsłonie, która być może ukaże się szybciej niż za tydzień, opowiem o smaczkach, które chciałbym zaimplementować w swoim szablonie, podam parę ciekawych źródeł oraz bardziej zagłębię się w poszczególne elementy stosu. Oprócz tego zaprezentuję Ci grafiki ilustrujące szablon strony na urządzenia mobilne oraz tablety i desktopy. Zapraszam do śledzenia! Czołem! 🙂

Czym udekoruję swoje mieszkanie?

Cześć!

Mega mi się spodobało porównanie z mieszkaniem #TakiJestemSkromny 😀 Niektórzy może pomyślą, że to blok o wystroju wnętrz czy coś… Jednak w dzisiejszym wpisie w kilku słowach opowiem Ci o planowanych przeze mnie dodatkowych sekcjach na blogu, które niebawem myślę ruszą. Żeby nie przeciągać, zaczynamy!

My home library

Sekcja, która dość często pojawia się na różnych blogach, dlatego też i u mnie się pojawi z dwóch powodów:

I tutaj też trzy poziomy…? Proszę Pani, on ściąga od kolegów!

Może i tak. Ale czemu nie stosować czegoś, co sprawdza się u innych? Grzechem byłoby nie spróbować, więc i u mnie taka sekcja powstanie. Znów kilka powodów:

Ten wpis pojawi się 11.09. Powyższe dwie rzeczy w swoich pierwszych wersjach pojawią się dokładnie tydzień później, tj. 18.09.

Kursy/tutoriale

Miałem przyjemność w drugiej połowie 2015 roku i okazjonalnie w 2016 roku prowadzić zajęcia, gdzie wspólnie z moimi młodszymi kolegami ze studiów razem uczyliśmy się podstaw programowania w C++. W tym roku na 90% również poprowadzę takie zajęcia, jednak tym razem będę starał się opisywać je na blogu to, co na nich robimy, a przy okazji dodatkowo komentować treści, które są w ramach tych zajęć poruszane, czy rozszerzać je o najnowsze standardy. Kto wie, może moi koledzy przyszli automatycy lub mechatronicy poczują pasję do programowania? Oby! Co ważne wbrew pozorom w dzisiejszej automatyce czy mechatronice nie da się obejść bez choćby kawałka kodu, o czym już trochę pisałem.

Ponadto u mnie się najlepiej także sprawdza zasada nauki poprzez uczenie kogoś. W przyszłości zatem pojawią się kursy czy tutoriale na temat tego, czego aktualnie się uczę.

My swetty new view

Już o tym wspomniałem w poprzednim poście, ale będziemy mam nadzieję razem tworzyć wygląd tego miejsca. Ten aktualny jest bardzo suchy, zimny, nieprzyjazny dla użytkowników. Dlatego też w ramach własnego rozwoju w technologiach frontendowych wdrożę nowy szablon dla bloga. Może z tego powstanie cała identyfikacja, kto wie 🙂 Ponadto dzięki nowemu widokowi wyeksponuję media społecznościowe, na których możecie mnie znaleźć i inne fajne rzeczy, które będą hulały w ramach tego miejsca 🙂

Teraz może ciut kontrowersyjna wersja, którą chciałbym zasygnalizować. Przeleciał mi w miejscu między uszami (hmm… chyba mózg???) taki pomysł, że kiedy to miejsce będzie ciut częściej przez Was odwiedzane, to może się stać, że włączę delikatne, nikomu nie przeszkadzające reklamy. W najbliższej i chyba jakiejkolwiek przyszłości nie zamierzam się utrzymywać z bloga, a nie chciałbym też wkładać w niego pieniążków. A to może by mi pozwoliło na opłacenie serwera i domen, więc moja pasja stałaby się całkowicie bezkosztowa. Nie wiem, zobaczymy w praniu. Jednak chciałem od razu o tym powiedzieć, żeby ktoś nie miał kiedyś jakiś uwag 🙂

Co przy okazji tego wpisu?

Cały czas się uczę produktywności. Ostatnio wpadłem na wpis Jakuba Gutkowskiego, którego blog też od czasu do czasu czytam (gdybym chciał wszystko słuchać, czytać i oglądać w Internecie, co mnie interesuje, to by życia brakło, więc niestety jakoś muszę tym żonglować). Opisał między innymi w nim swoje krótkie, ale codzienne blogowanie. Testuję to teraz u siebie. Codzienne, ale krótkie. Ale codzienne. I jestem bardzo zaskoczony. Łatwiej mi się zabrać do przygotowania wpisu, piszę go prawie dwa razy szybciej i dużo, dużo więcej.

Podsumowanie

To wszystko pojawi się na pewno. A co więcej? Zobaczymy 🙂 Lubię rozwijać to miejsce i w końcu będzie więcej się tu działo. Już teraz zapraszam Cię do obserwowania i udostępniania dalej mojej strony 🙂 Im więcej nas tym weselej! Dzisiaj wpadły pomysły na kolejne wpisy, więc będzie się działo, oj będzie się działo! Tymczasem bywaj!

No to chyba tylko ja zostałem… DSP 2017

Czołem!

Niektórzy o Daj się poznać może już zapomnieli, a ja jeszcze nie podsumowałem konkursu Daj się poznać. Skandal, płacz i zgrzytanie zębów! Jak tak można! No czasem po prostu trzeba 🙂 Nie ma co odwlekać, zaczynamy!

Jak do tego wszystkiego doszło…

Związany z komputerami jestem z tego co pamiętam od 6. klasy szkoły podstawowej. Wtedy to pojawiły się w planie lekcji pierwsze zajęcia z informatyki i po zajęciach kółko informatyczne. Tworzenie pierwszych stronek internetowych, w pełni statycznych z wrzuconymi skryptami, jakieś zegarki, kalendarze prosto z internetów. To był rok bodajże 2008. Kiedyś takich repozytoriów oferujących kody do osadzenia było multum. Chyba te czasy już minęły 🙂 Oprócz pisania stronek było coś takiego jak Microsoft Windows Logo. Pisało się proste komendy i rysowało się obrazki na ekranie. Pierwsze zderzenie z programowaniem, taki dzisiejszy Scratch 🙂

Potem w gimnazjum też jakoś powoli wokół tego oscylowało, jednak bardziej zapaliła mnie elektronika. Dużo siedziałem i czytałem na ten temat, wiele nie rozumiałem, ale było fajnie! Początki zawsze są trudne. Zainteresowałem się też programowaniem mikrokontrolerów. Jak każdy chyba zaczyna, język C i kontrolery rodziny AVR.

No i w liceum. Poszedłem na profil z rozszerzoną matematyką, fizyką i informatyką. Wiele wtedy ruszyłem do przodu. Napisałem swojego CMSa w PHP (dzisiaj to bym ten kod zaorał, ale kiedyś jakoś trzeba było zacząć), dalej bawiłem się kontrolerami. W trakcie lekcji pisaliśmy programy w Pascalu. Z tego co się orientuje, teraz już tego nie praktykują, tylko ludzikowie uczą się w C++. Do tego jeszcze napisałem takim mały system do obsługi biblioteki w Delphi. Jeszcze z tym programem byłem w Kaliszu na konkursie też. No było trochę różnych ciekawych zajęć 🙂

Czas na studia. Na pierwszym roku programowanie strukturalne w C++, potem obiektowo. Zacząłem studiować informatykę. Tutaj już za dużo by pisać i się rozdrabniać, jak powyżej.

W międzyczasie gdzieś chodziło mi po głowie, żeby może zacząć coś pisać, robić. Fascynowało mnie, jak ludzie wrzucali swoje filmiki w Jutuby, gdzie tłumaczyli ludziom rzeczy związane z tworzeniem oprogramowania. Sam w końcu z nich czerpałem garściami! No i tak się schodziło, schodziło…

Aż w końcu trafiłem na vlog Maćka Aniserowicza. Chyba 3. odcinek. Mówię wow, ale fajnie by było wziąć w tym udział. A tam, raz kozie śmierć… I miałem w głowie wielkie plany, jak bombowo ruszyć z działalnością blogową, ale natłok zajęć (jak zawsze) sprawił, że w błyskawicznym tempie wykupiłem hosting, domenę, w dwie noce z tutorialami z internetów napisałem swój szablon do WordPressa. No i jedziemy z tematem!

Jak doszło, to sobie i poszło!

Ja nie dam rady, no ja?! No jak nie, jak tak! No i tak dziergałem sobie te wpisy. Sprawiało mi to mega przyjemność. Jedyne co mi się nie podobało już wtedy to było to, że nie miałem planu publikowania tych wpisów. Ani na jaki temat będą te wpisy, ani kiedy będą one opublikowane. Często to było tak, że siadałem, pisałem i od razu publikowałem. Wiem, że to było niefajne i się sam źle z tym czułem. Wiem też, że wpis musi chwilę odleżeć tak, aby potem do niego zajrzeć i świeżym okiem na niego spojrzeć. Umożliwia to wyłapanie błędów, czy dodanie czegoś świeżego.

No i dotrwałem do końca konkursu. I to był dla mnie największy sukces, nic więcej nie oczekiwałem i dokładnie taki cel sobie wyznaczyłem. Dotrwać i pokazać sobie, że mogę.

Po konkursie oddałem się studiom w całości – trzeba było wszystko pozaliczać itd. No i przed samą sesją gala Daj się poznać. Niezwykłe dla mnie przeżycie. Tyle ludzi, którzy wyszli ze swojej strefy komfortu. Każdy starał się dać coś od siebie. Jak pisałem w poprzednim wpisie – to jest nasz skrawek internetu i ja traktuje swój jak kolejny dom. Chcę, żeby był jak najpiękniejszy, jak najlepszy, by każdy mógł tutaj wstąpić i wypić ze mną herbatę oraz porozmawiać na nasze wspólne tematy 🙂 No i ilość prezentacji – powalająca. Siedemnaście prezentacji, w tym 15 prowadzonych przez uczestników konkursu. Szał! Zresztą co tu dużo mówić. Zastanawiałem się i planowałem napisanie kilku słów o każdej z prezentacji, nawet starałem się robić zdjęcia w tym czasie, jednak każdy może obejrzeć te wystąpienia na odpowiedniej playliście na kanale Devstyle.pl. Zapraszam do obejrzenia tych filmów!

No i po co to wszystko?

Hmm… może najlepiej to wypunktować?

  1. Zacząłem się bardziej rozwijać w kierunku informatyki. Coraz bardziej wyklarowuje mi się w głowie wizja przyszłości, to gdzie chce dotrzeć i jak tam dotrzeć.
  2. Zacząłem dostrzegać rzeczy, których wcześniej nie dostrzegałem. Zdarzyło mi się o tym powiedzieć w trakcie gali DSP i tutaj to powtórzę. Ten konkurs pozwolił mi na poznanie siebie na nowo, spojrzenie z nowej, nieznanej mi strony. (I dlatego polecam każdemu wzięcie w nim udziału, żeby spojrzeć na siebie z boku!)
  3. Poznałem nowe ciekawe źródła informacji na różne tematy, produktywności, finansów itp. Coś na co wcześniej nie zwracałem aż tak bardzo uwagi.
  4. Staram się cały czas wdrażać metody pozwalające mi na produktywną pracę. Nabranie nawyków zajmuje trochę czasu, ale z dnia na dzień jest coraz lepiej 🙂
  5. Projektu nie skończyłem, ale zacząłem. Jak pisałem wcześniej, zmieniły się plany i wszystko na bieżąco będę publikował tutaj na blogu 🙂
  6. Przestawiam swój work-life balance. Nie można cały czas dawać z siebie 200% normy 🙂 Ważne jest, żeby też mieć czas dla siebie 🙂
  7. Nie można być dobrym we wszystkim, jak się jest dobrym we wszystkim, to jest się dobrym w niczym 🙂

Chyba wszystko. Część z tego to oczywistości, ale trochę zajęło, zanim dotarły mi do łepetyny. Co ważne, nie wszystko da się zrobić od razu, jednak cały czas się staram, aby poprawić lub naprawić to, co jest nieprawidłowego w moich nawykach, zachowaniach itd. Pierwszym krokiem do sukcesu jest uświadomienie sobie, że coś może być robione lepiej 🙂

Może wyszło troszkę długo, ale mam nadzieję ciekawie. Jeżeli masz jakieś pytania, to śmiało zapraszam do dyskusji w komentarzach! Proszę kliknij łapkę w górę, udostępnij post. Bardzo dużo to dla mnie znaczy! A tymczasem życzę Ci miłego dnia i do zobaczenia w kolejnym wpisie!

Powrót po… miesiącach?

Cześć i czołem! 🙂

Uff, mega dawno mnie tu nie było. Witam ponownie u mnie na blogu 🙂 Stęskniłem się mega za tym miejscem i w końcu zebrałem się, żeby tutaj wrócić.

Zapytasz się mnie pewnie, gdzie byłem jak mnie nie było. Jak się skończyło Daj się poznać, to zaczęła się na dobre sesja, którą znów pochłonęła mnie, niczym dobra książka – nie dało się od niej oderwać. W sumie dalej trwa, mam dwa projekty do dokończenia.

W międzyczasie oczywiście była jeszcze gala DSP. Odnośnie całego DSP powstanie osobny post, już niebawem. Krótkie podsumowanie tego co udało mi się zrobić i co udało się zmienić. To będzie dość obszerny artykuł.

A co po sesji? Pracuje w pełnym wymiarze godzin przez całe wakacje. Początek wakacje (właściwie cały lipiec) starałem się odpocząć, odespać co swoje, poplanować, o czym za chwilę. W między czasie nadrabiałem trochę swoich zaległości, zamykałem część tematów. Potrzebowałem odpoczynku i sobie go dałem 🙂 No i co ja tak zaplanowałem i przemyślałem? Pewnie jak się domyślasz, dużo myślałem o tym miejscu w świecie.

Pisząc ten post przyszła mi do głowy taka analogia. Kupujesz swoje pierwsze małe mieszkanie i powoli je remontujesz i urządzasz. I tak jest z tym miejscem. To takie moje małe mieszkanie, które powoli urządzam, remontuje, niedługo będę wstawiał nowe meble…

Poniżej przedstawię Ci zarys moich planów związanych z dalszym rozwojem tego miejsca (w punktach będzie najbardziej czytelnie):

To chyba tyle. Te rzeczy miałem wypisane w notatkach w OneNote i przemyślałem jeszcze raz w ciągu tworzenia tego wpisu. Może trochę tajemniczo, ale nie mogę odkryć wszystkich kart na samym początku, bo co to by była za zabawa. Tak samo, jak idealne mieszkanie wypracowuje się latami, tak samo i to miejsce zanim będzie takie, jakie chce, to musi trochę wody w rzece upłynąć. Jeżeli masz jakieś sugestie, czy do tematów na blogu, czy chcesz się jakoś włączyć w moją pracę, to śmiało dawaj znać! 🙂 Lubię pracować z ludźmi, dlatego Twoje zaangażowanie będzie mnie cieszyło mocniej 🙂 Obiecuję, że dam z siebie wszystko, aby jak najlepiej wywiązać się z tego, co napisałem wyżej. To będzie taka umowa między nami #HackowanieSwojejMózgownicy 😉 Oczywiście jak zawsze nie będzie łatwo, bo już w lutym obrona projektu inżynierskiego, dlatego pewnie też to mi zajmie sporą część czasu.

Znów dość długi wpis. Mam nadzieję, że będziesz mi towarzyszył/towarzyszyła w tym co robię 🙂 Bardzo lubię przebywać w tym małym, ciasnym mieszkanku – ciasnym, ale własnym 🙂 To całe blogowanie, jest naprawdę ciekawą i rozwijającą czynnością i nie chciałbym jej stracić 🙂 Zatem do zobaczenia, mam nadzieję już niedługo albo umówmy się już od razu. W przyszły czwartek wieczorem widzimy się na moim, późnym bo późnym, ale będzie, podsumowaniu wydarzenia Daj się poznać 2017. To będzie bardzo ważny dla mnie wpis, więc przeżyj go razem ze mną 🙂 Zachęcam Cię, kliknij łapkę w górę, udostępnij post, ten wpis, obserwuj w mediach społecznościowych. Może kogoś jeszcze zainteresuje to, co robię, może ktoś będzie miał jakieś uwagi dla mnie 🙂 Poproszę 🙂

Do zobaczenia! 🙂

Informatyk/programista w przemyśle

Welcome! (łaciński)

Następny wpis z szeroko rozumianego IT. Ostatnio lepiej mi się nad takimi wpisami pracuje, głównie z uwagi na to, że mam mało czasu na rozwój projektu. Zbyt wiele strzałów z boku. Ale spokojnie, co się odwlecze to nie uciecze 🙂 Przygoda z konkursem powoli się kończy, ale przygoda z blogowaniem na pewno nie! 🙂 Będę zmuszony zrobić małą pauzę w pisaniu bloga i rozwijaniu projektu, ponieważ trzeba zaliczyć to i owo na uczelni, a jest tego całkiem sporo na dwóch kierunkach tak naprawdę 🙂 Nie przedłużając, dzisiaj chciałbym w kilku słowach opowiedzieć Ci o czymś, co jest związane bezpośrednio z moim drugim kierunkiem studiów (patrząc chronologicznie pierwszym) to jest z automatyką i robotyką oraz o tym, jakie informatyka zajmuje miejsce (a zajmuje coraz wyższe) w przemyśle.

Co to ta automatyka i robotyka?

Pozwolę sobie zacytować Wikipedię, by zdefiniować te dziedziny nauki.

Automatyka (ang. automatic control lub control engineering) – dziedzina techniki i nauki, która zajmuje się zagadnieniami sterowania różnorodnymi procesami, głównie technologicznymi i przemysłowymi (zwykle bez udziału lub z ograniczonym udziałem człowieka).

Automatyki nie należy utożsamiać z automatyzacją (ang. automation), czyli metodami i środkami służącymi do wyeliminowania lub ograniczenia udziału człowieka w różnych czynnościach. Do automatyzacji może się przyczynić nie tylko automatyka, ale i na przykład mechanizacja, robotyka lub odpowiednie wykorzystanie technologii informacyjnych.

Robotyka – interdyscyplinarna dziedzina wiedzy działająca na styku mechaniki, automatyki, elektroniki, sensoryki, cybernetyki oraz informatyki. Domeną robotyki są również rozważania nad sztuczną inteligencją – w niektórych środowiskach robotyka jest wręcz z nią utożsamiana.

Po raz pierwszy terminu robot użył czeski pisarz Karel Čapek w 1920 roku w swojej sztuce Rossum’s Universal Robots. Terminem tym określił sztuczną istotę zbudowaną na podobieństwo człowieka, stworzoną, by zastąpić człowieka w pracy. Nazwa wywodzi się od czeskiego robota czyli praca pańszczyźniana. W języku angielskim pojęcie to pojawiło się po raz pierwszy w krótkim opowiadaniu Isaaca Asimova Kłamca (Liar) w 1941 roku. Początek rozwoju robotyki jako dziedziny wiedzy przypada na rok 1961. Wtedy to w General Motors uruchomiono pierwszy manipulator pracujący na linii produkcyjnej.

Przemysł w rozumieniu dużych fabryk produkcyjnych, nie jest w stanie funkcjonować bez automatyków i robotyków. Technologowie projektują proces od strony wykonania danego produktu – co po kolei ze sobą mieszać, w jakich proporcjach, temperatury, czy po kolei obrabianie elementu, składanie elementów w całość. Automatyk dba o to, aby ten proces przebiegał zgodnie z założeniami ustalonymi przez projektantów i technologów. Robotyk zaś dostarcza roboty, manipulatory, odpowiednio je oprogramowuje tak, by zastąpiły człowieka przy wykonywaniu powtarzalnych czynności, dzięki czemu można je wykonywać szybciej, powtarzalniej, dokładniej, no i robot zdecydowanie rzadziej idzie na L4 🙂 Ale dlaczego o tym zdecydowałem się napisać post? Dlatego, że dzisiaj co raz więcej pracy obok automatyka i robotyka w dużych zakładach przemysłowych ma… informatyk 🙂 Najpierw krótki rys historyczny.

Rewolucje przemysłowe

Od czasów, kiedy biegaliśmy jako ludzie po drzewach za bananami minęło już troszkę. Przez ten czas rozwinęliśmy się w sposób niewyobrażalny. Szczególnie ostatnie 300 lat tak naprawdę było przewrotowych w życiu ludzi. Nie mówiąc już o ostatnich 30 latach. Jednak wyróżniamy, zwane rewolucjami, w których wynalazki danego czasu stały się kamieniami milowymi w obszarze rozwoju przemysłowego.

O pierwszej rewolucji przemysłowej mówimy od czasu wynalezienia i wprowadzenia maszyny parowej. To spowodowało rozwój kolei i transportu, wiele maszyn w przemyśle otrzymało napęd dzięki zespołowi parowemu. Można było produkować więcej i szybciej oraz szybciej dystrybuować towary. Zdecydowany kopniak w rozwoju.

Wydarzeniem początkującym drugą rewolucję przemysłową było utworzenie linii produkcyjnej w zakładzie przetwórstwa mięsnego w Cincinnati. Zmieniło się podejście do produkcji organizacja pracy, zasobów maszynowych i ludzkich. Powstało podejście do produkcji, które powszechnie jest stosowane do dzisiaj.

Trzecią rewolucję przemysłową zapoczątkował tak naprawdę dynamiczny rozwój elektroniki. Wynalezienie układów programowalnych oraz nowych sposobów sterowania np. silnikami elektrycznymi spowodował, że sterowanie maszyną było zdecydowanie prostsze i łatwiejsze oraz że mogło odbywać się automatycznie. I tutaj już wkracza nasza ukochana branża IT. Programiści stanęli na wysokości zadania i zaczęli dostarczać rozwiązania dla przemysłu, które pozwalały monitorować proces w czasie rzeczywistym oraz nim sterować. Powstało coś, co nazywamy SCADA – Supervisory Control And Data Acquisition. Scadą nazywamy oprogramowanie, które daje operatorowi własnie takie możliwości. I trwa to aż do teraz.

Co dalej?

Warto wspomnieć, że przemysł jest, szczególnie wbrew pozorom w dzisiejszych czasach, bardzo konserwatywny. Niechętnie korzysta się z naprawdę nowych technologii oraz tzw. „petard”. Z czego to wynika? Wbrew pozorom z czystej ekonomii. Wyobraź sobie, że jest sobie linia produkcyjna samochodów XYZ, bardzo lubiana i rozpoznawalna marka. Jak sądzisz, ile może kosztować linii produkcyjnej chociażby na minutę? Odpowiedź brzmi dziesiątki, a może i nawet setki tysięcy euro. Tak, dobrze widzisz. Dlaczego więc nie tak bardzo przemysł boi się stosowania nowinek technologicznych? No bo są one po prostu nieprzetestowane przez odpowiednią ilość ludzików. Jeżeli jakieś rozwiązanie jest stosowane od 30 lat to znaczy, że jest dobre i niezawodne, nowinka natomiast, jest jak sama nazwa mówi nowa i nieznana. Nie wiadomo jak może w pewnych sytuacjach zareagować, a jeżeli coś się „wykrzaczy” to jak duże straty może to przynieść.

Jednak to nie znaczy, że jesteśmy na etapie, w którym już nic się nie może zmienić. Wręcz przeciwnie. Wkraczamy w nowy etap w przemyśle, gdzie informatycy mają gigantyczne pole do popisu. O czym mowa?

Przemysł 4.0

W dzisiejszym przemyśle coraz częściej słyszymy hasło „Przemysł 4.0”. Jest to nazwa czwartej rewolucji przemysłowej, której kamieniem milowym są rzeczy takie jak Internet of things, chmura, sztuczna inteligencja i ich pochodne. Ale jak to się ma do składania owych samochodów z wcześniejszego przykładu? Dzięki wprowadzeniu powyższych technologii do procesów produkcyjnych jesteśmy w stanie dynamicznie i elastycznie gromadzić dane z procesu, analizować je przy pomocy sztucznej inteligencji i optymalizować te procesy tak, by przebiegały jeszcze szybciej, bardziej wydajnie. Czy zatem przemysł nie boi się wprowadzać takich zmian? Boi się, ale na szczęście coraz więcej osób dostrzega ogrom zalet płynących z modernizowania swojej infrastruktury. A do modernizowania tej infrastruktury potrzebni są informatycy, specjaliści od bezpieczeństwa, analizy danych, sztucznej inteligencji.

Podsumowanie

Przemysł 4.0 to przyszłość i co do tego nie ma żadnych wątpliwości. Potrzeba młodych, światłych ludzi, którzy dostarczą nowoczesne rozwiązania pozwalające na maksymalizację produkcji ze względu na różne kryteria, czy to finansowe, czy jakościowe. Kilka ciekawych materiałów znajdziecie pod tymi linkami:

Kolejny temat rzeka. Rzeka, która stworzy ogromną ilość miejsc pracy dla osób z branży IT. Mam nadzieję, że zainteresował Cię ten temat i poczytasz coś więcej o nim 🙂 Programista nie musi siedzieć gdzieś w korpo pod krawatem za biurkiem. Może robić inne, równie, a może nawet bardziej, ciekawe rzeczy 🙂 Jeżeli masz jakieś pytania, to oczywiście zachęcam do ich zadawania i komentowania. A jeżeli już przeczytałeś i Ci się podobało, to kliknij na Facebooku przysłowiową łapkę w górę albo podeślij link znajomym 🙂 Dziękuję i życzę Ci miłego dnia! 🙂

MVP i MVC – wstęp, rozwinięcie, bez zakończenia

Siyakwamukela! (zulu)

Wracamy do rozważań nad modelowanie aplikacji. W ostatnim wpisie, gdzie wyciągaliśmy informacje ze scenariuszy przypadków użycia narzuciłem temat wzorców architektonicznych MVP i MVC. Wtedy o nich wspomniałem, podlinkowałem parę rzeczy, jednak dzisiaj mam nadzieję troszkę to rozwinąć 🙂

Wzorce projektowe i architektoniczne

Wzorzec projektowy jest narzędziem do rozwiązywania powtarzalnych problemów pojawiających się podczas implementacji oprogramowania. Co ważne, wzorzec mówi tylko, jak podejść do problemu, od której strony go ugryźć, daje schemat rozwiązania zagadnienia. O wzorcach projektowych powstała świetna książka, którą napisali Erich Gamma, Richard Helm, Ralph Johnson i John Vlissides, czyli grupa określana „Bandą czworga”. Mowa oczywiście o książce „Wzorce projektowe. Elementy oprogramowania obiektowego wielokrotnego użytku„. W dzisiejszym programowaniu bez wzorców projektowych nie ma sensownej pracy.

Wzorzec architektoniczny jest podobnym narzędziem do wzorca projektowego, jednak tutaj problemy implementacyjne nie dotyczą relacji klas, obiektów, zaś odnoszę się do struktury systemu, podziału na moduły i relacji pomiędzy nimi. MVP i MVC są właśnie takimi wzorcami.

Zacznijmy od MVC

Głównym zadaniem programisty nie jest wbrew pozorom zaimplementowanie fury kodu, która robi coś tam. Programista jest postawiony przed pewnym problemem, którego musi dokonać analizy i wykonać podział na mniejsze, dające się łatwo zaimplementować fragmenty. Implementacja jest procesem wtórnym.

We wzorcu MVC podchodzimy do analizowanego problemu rozbijając go na trzy składowe, od których bierze się nazwa wzorca:

  1. Warstwa Model – w tej warstwie zawieramy całą logikę biznesową aplikacji. Bardzo ważnym jest, aby nie mieszać warstw ze sobą i żeby rzeczywiście cała logika biznesowa została w tej warstwie.
  2. Warstwa View, czyli widoku – w tej warstwie zawierają się wszystkie klasy, których obiekty potem zmaterializują się w postaci interfejsu graficznego wyświetlanego użytkownikowi; poszczególne fragmenty widoku odpowiadają odpowiednim fragmentom modelu
  3. Warstwa Controller, czyli kontroler – przyjmuje akcje wywołane przez użytkownika, względem których odpowiednio zarządza aktualizowaniem modelu.

Taki podział systematyzuje sposób budowy tworzonego oprogramowania. Na poniższym diagramie można zaobserwować przebieg działania systemu zbudowanego w ten sposób.

Użytkownik systemu wciska przycisk, który jest elementem warstwy widoku. Zdarzenie to jest przekazywane do kontrolera. Kontroler wywołuje odpowiednie działania w warstwie modelu. Po wykonaniu operacji model wywołuje aktualizuje widoku, który to pobiera nowe dane w trybie odczytu z warstwy modelu, już bez uczestniczenia kontrolera.

A MVP?

We wzorcu Model-View-Presenter warstwy są tak samo podzielone. Tutaj zamiast warstwy kontrolera, mamy prezentera, który rozdziela warstwy widoku i modelu. Relacja pomiędzy warstwami wygląda jak na poniższym diagramie.

Znów widok wywołuje, tym razem w prezenterze, akcję wychwyconego zdarzenia. Prezenter zarządza aktualizację modelu. Kiedy to zostanie wykonane, model informuje prezentera, że jego stan uległ zmianie. Prezenter pobiera zaktualizowane dane z modelu, odpowiednio je formatuje i przesyła do warstwy widoku, która prezentuje je użytkownikowi.

Zastosowanie

Wzorce MVP i MVC są powszechnie stosowane w projektach. U mnie też będą zastosowane, tak jak już o tym pisałem. Na diagramach klas dla każdego scenariusza, które mam nadzieję niebawem się pojawią zobaczysz fizyczną realizację architektury systemu zgodnie ze wzorcem MVP. Taka struktura systemu jest elastyczna, łatwo można podmieniać poszczególne warstwy dlatego, że są rozdzielone od siebie.

Podsumowanie

Diagramy miały się już pojawić, ale niestety się nie ogarnąłem z tym. Jak się pali, to od razu cała wieś post ten powstał, ponieważ jeden z czytelników zasugerował mi dogłębniejsze pochylenie się nad tymi wzorcami, które de facto są bezpośrednio związane z moim projektem 🙂 Teraz niestety zaliczenia na dwóch kierunkach biorą górę i muszę się nad tym skupić, zatem na chwilkę wygaszamy pracę nad projektem. Co się odwlecze to nie uciecze 🙂 W zanadrzu mam jeszcze jeden post dla Was, ale musicie być cierpliwi 🙂

Oczywiście zachęcam do komentowania i udostępniania mojej twórczości. Każda interakcja jest na wagę złota, ponieważ pokazuje, że ktoś czyta moje wypociny 🙂 Tymczasem życzę Ci miłego dnia i do zobaczenia! 🙂

Informatyk/programista potrzebny przy budowie gokarta elektrycznego?

Vitajte! (słowacki)

Dzisiaj chcę Ci coś opowiedzieć, drogi Czytelniku. Opowiem Ci o zespole świetnych ludzi, którzy tworzą coś niezwykłego i o tym, co może robić informatyk lub stricte programista w ich szeregach. Ostrzegam, wpis jest troszkę długi, ale naprawdę warto go przeczytać 🙂

Jak zapewne czytałeś w sekcji O autorze, mam niebywałą przyjemność być członkiem Koła naukowego ADek, działającego przy Wydziale Elektrycznym Politechniki Warszawskiej.

O kole

Koło naukowe ADek od początku swojego istnienia zajmuje się budową gokartów elektrycznych, z którymi co roku jeździ na zawody Limoges French International and Educational Meeting of Electrical Gokart e-Kart i z których co roku przywozi różne nagrody. Poniżej zachęcam do zapoznania się z filmem z zawodów w 2016 roku.

Oraz kolejny film przedstawiający naszą działalność:

Członkowie koła projektują i implementują rozwiązania z dziedziny mechaniki i elektrotechniki, które w sumie tworzą całość zwaną gokartem elektrycznym.

Drugą sekcją w kole, która się wytworzyła całkiem nie dawno, jest sekcja budowy bezzałogowych statków powietrznych, czyli tzw. „dronów”. Pewnie widzisz, że ostatnio drony są po prostu wszędzie 🙂 Także i do nas dotarły. Tutaj ekipa przygotowuje się do zawodów dronów Droniada, które odbędą się w czerwcu w Krakowie. Zobacz, jak ciekawe zadanie zostało postawione przed uczestnikami zawodów 🙂

Staramy się, aby nasze rozwiązania były nowoczesne, innowacyjne, a co więcej, zaspokajały potrzeby dynamicznie rozwijającego się rynku – czy to pojazdów elektrycznych, od których nie uciekniemy, a wręcz przeciwnie, powinniśmy się coraz bardziej z nimi zaprzyjaźnić (kto nigdy nie jechał, to polecam! :D), czy lotniczych. Dzięki temu członkowie koła mają dostęp do narzędzi czy elementów dostarczanych od naszych sponsorzy mogą pozyskać wartościowych pracowników czy realizować swoje projekty z naszym udziałem. I wilk syty i owca cała 🙂 Bo, jak się pewnie domyślasz, niestety do takich przedsięwzięć są potrzebne całkiem spore pieniądze.

Koło liczy ok. 40 osób podzielonych na różne zespoły, np. mechaników, napędu, instalacji itp. Członkowie koła pochodzą z różnych kierunków i wydziałów. Są wśród nas automatycy, elektrotechnicy, mechanicy. Jednak w ostatnim czasie coraz silniejsza stała się potrzeba utworzenia nowego zespołu, do którego właśnie zmierzam w swoim wpisie 🙂

Czy to wystarczy popodpinać ze sobą kabelkami i skręcić śrubkami i jedzie?

Otóż oczywiście nie. Pewnie się zdziwisz, ale do 100% działania takiego pojazdu trzeba… naklepać całkiem sporą ilość kodu. Tak, kodu! Ze względu na rozwój koła, ilość zespołów, członków, ilość pracy do wykonania, zaczęliśmy tworzyć kolejny zespół, tzw. Dział IT. Szumnie i dumnie brzmi, ale nie wiem, czy zdajesz sobie sprawę, jak jest ten zespół osób ważny w naszej pracy. Pozwól, że przedstawię Ci strukturę tego działu i wyjaśnię po kolei co się z czym je.

Struktura działu IT w kole

Nasz dział składa się z trzech zespołów. Pierwszym z nich jest zespół oprogramowania niskopoziomowego. Jak napisałem wcześniej, projektujemy i implementujemy urządzenia od podstaw. Sercem urządzeń elektronicznych jest mikrokontroler, który w najprostszych wypadkach zbiera dane z czujników i przesyła je odpowiednią magistralą do innych urządzeń. Jednak mikrokontroler trzeba co zrobić? ZAPROGRAMOWAĆ. Urządzeń powstających od podstaw u nas w kole jest całkiem sporo, zatem i samego oprogramowania do napisania także jest całkiem dużo. Ponadto kod trzeba w jakiś sposób utrzymać i ewentualnie rozwinąć, jeżeli urządzenie tego wymaga i w ogóle umożliwia 🙂 Do dziś robiliśmy to tak, że jedna lub dwie osoby tworzyły jakieś urządzenie od podstaw, projektując elektronikę i pisząc potem na nią kod. Jednak podział obowiązków ściśle na dwie, tzn. elektronik zajmuje się tym, co wychodzi od nóżki mikrokontrolera dalej, a programista tylko tworzy kod realizujący założenia sprawi, że urządzenia będą powstawały szybciej, bo projektowanie kodu i elektroniki będzie można zrównoleglić i będą jeszcze lepiej dopracowane (jeżeli ktoś nigdy nie projektował elektroniki, to podpowiem, że jest to niesamowicie trudne i trzeba brać pod uwagę wiele czynników). Tutaj głównie wykorzystywać będziemy język C, w tym języku bardzo wygodnie się to robi 🙂 Można to robić jeszcze w Assemblerze, ale na razie sobie to podarujemy 🙂

Drugim zespołem potrzebnym w kole jest zespół oprogramowania wysokopoziomowego. O matko, chcesz mi powiedzieć, że tam można jeszcze coś pisać w jakimś Pythonie, Javie czy .Necie? Można. Pewnie, że można. A nawet trzeba. Dodam, że część projektowanych urządzeń może skomunikować się z komputerem, są też takie, których sercem jest minikomputer RaspberryPi, o którym już pisałem tutaj 🙂 Stawiamy na nim Linuxa i wtedy mamy możliwość uruchomienia aplikacji napisanych w językach wysokopoziomowych. Jeżeli chodzi o urządzenia, które mogą skomunikować się z komputerem. Napisanie odpowiednich aplikacji w języku wysokiego poziomu może np. pozwolić zebrać dane pomiarowe, zmienić ustawienia konfiguracyjne urządzenia bez zmian i rekompilowania programu procesora etc. Możliwości jest nieskończona ilość, a pomysłów w głowie jeszcze więcej 🙂 Ale oczywiście co? Potrzeba to ZAKODZIĆ. Do tej pory też to działało tak jak wyżej. Osoba projektująca dane urządzenie sama coś tam takiego klepała. Zatem trzeba to zmienić.

No i trzeci, ostatni już zespół w tym dziale – zespół administracji i utrzymania usług sieciowych. Tak duża organizacja jak nasze koło siłą rzeczy musi być w jakiś sposób zarządzana, musi być ułatwiona komunikacja, wymiana plików czy ich wersjonowanie, przy czym nie możemy też korzystać z publicznych usług typu GitHub z oczywistych względów 🙂 Dlatego też powstała potrzeba, aby mocno popracować w tym temacie. Z czasem zostały takie usługi stworzone, jednak niestety, po otrzymaniu przez naszą organizację publicznego IP doszło do włamania na nasz serwer i zainstalowanie rootkita, co wiąże się z koniecznością postawienia wszystkiego od początku. Dostrzegamy oczywiście dobre strony tego przedsięwzięcia. Teraz po 4 latach działania koła dokładnie wiemy, czego potrzebujemy i co się nam jeszcze przyda. Zatem zebrała się w naszym kole ekipa, która teraz dzielnie walczy z tematem konfiguracji wszystkich usług tak, by żyło się lepiej i bezpiecznie 🙂 Pewnie możesz się zapytać a czego to oni takiego potrzebują? No to proszę 🙂 Na co dzień korzystamy z Redmine, który pozwala zarządzać projektami i zadaniami w nich do wykonania. Do wersjonowania plików i równoległej współpracy nad nimi do tej pory wykorzystywaliśmy SVN. Naszymi kontami w tych usługach zarządza Ldap (EDIT: usługa to tak naprawdę OpenLDAP, LDAP sam w sobie jest protokołem dostępu do katalogów). Do przechowywania większych plików i wymiany nimi – FTP. A do tego jeszcze zadbanie o odpowiednie zabezpieczenia, integracja usług ze sobą i wiele wiele innych 🙂 Roboty oczywiście nie do przerobienia.

Podsumowanie

Chciałem Ci w tym wpisie przedstawić kilka rzeczy: koło naukowe, które jest zespołem naprawdę świetnych ludzi wkładających całe serce w to, co robią, jakie potrzeby wynikają z istnienia tak dużej organizacji, pokazać, że programista nie musi kodzić tylko rzeczy związanych bezpośrednio z biznesem, ale może się spełniać również przy innych zadaniach, to jak taki dział się tworzy oraz że programowanie jest wszędzie, nawet tam, gdzie go może nie widać 🙂 Dla mnie to wielki zaszczyt tworzyć z tymi ludźmi to wszystko, o czym dzisiaj napisałem.

Gorąco zachęcam Cię, do śledzenia naszego Fanpage na Facebooku. Jeżeli masz pytania o samą organizację, czy związane z pojazdami elektrycznymi, może chcesz w jakiś sposób do nas dołączyć, czy nam pomóc, nawiązać współpracę, cokolwiek, pisz w komentarzu lub skontaktuj się przez formularz kontaktowy w zakładce Kontakt.

A tymczasem powoli się z Tobą żegnam, drogi czytelniku. Trzymaj kciuki, bo w niedzielę (28.05) nasza reprezentacja znów wyjeżdża do Francji na zawody, które są już we wtorek. Życzę Ci dobrego dnia! 🙂

Malinowy król, czyli komputer na każdą kieszeń?

Bi xêr hatî! (kurdyjski)

We wpisie z cyklu szeroko pojętego IT (swoją drogą bardzo ciekawe i śmieszne określenie) porozmawiamy sobie o… malinach. Są różne odmiany malin: polana, polka, poranna, jaką więc wybrać?

Oczywiście suchy żart musiał wjechać, kiedy na tapecie mamy tzw. Raspberry Pi. Co to takiego jest?

Rys historyczny

Wyobraź sobie, drogi Czytelniku, taką sytuację. Złożyłeś nowy, idealny komputer o niewyobrażalnych parametrach lub po prostu kupiłeś taką maszynę. I przychodzi Twój młodszy brat, siostra, syn, córka i mówi, że chce zobaczyć co jest w środku i jak to działa. Albo, zdecydowanie ciekawsza wersja, jeżeli to i to się zmieni, wymieni, przestawi, to będzie lepiej. A Ty co na to? Nie. Zepsujesz. Spadaj na drzewo. Bo stracisz furę kasy, jak się z Twojego najnowszego, najlepszego sprzętu się zakopci, a wyłożyłeś na to oszczędności swojego życia. Po prostu nie. Czyli, może nie świadomie, blokujesz rozwój drugiej osoby. Co więcej, ta sytuacja może się rozegrać tylko z jedną osobą! Sam się zablokujesz, bo nie będziesz chciał stracić sprzętu. Taki wstęp, żebyś poczuł o co chodzi.

Mamy początek 21. wieku. W Cambridge w college’u św. Jana Eben Upton, dyrektor studiów nad oprogramowaniem, oraz dr Robert Mullins zastanawiają się, dlaczego u studentów jest coraz słabsi w dziedzinie programowania. Wysnuli wniosek, że jednym z głównych powodów takiego zjawiska jest ograniczenie dostępu do komputerów, do ich „bebechów”. Nie mają możliwości, by czegoś dotknąć własnymi rękami, by eksperymentować i kreować nowe pomysły. Czy ta historyjka z początku tego nie prezentuje? Dwa dzisiaj interfejsy naszych telefonów, które tak naprawdę są komputerami, a także właśnie naszych laptopów, stacjonarek itd. są tak naszpikowane okienkami, guziczkami, że nasze myślenie i kombinowanie zostaje wyłączone. Jesteśmy prowadzeni za rączkę. Tylko czasem prowadzenie za rączkę kończy się tak:

Samochód w wodzie

Źródło: http://www.sadistic.pl/patrolem-przez-staw-vt241647.htm

Znamy te historie, gdzie ludzie jadą z GPSem tak ślepo, że kończą w stawie. Tak jest i w tym przypadku. Prostota użytkowania nas ogłupia. Trzeba było zatem stworzyć coś, co pozwoli na naukę, eksperymentowanie i eksplorowania świata programowania, elektroniki, informatyki. I tak o to wyżej wymienieni Panowie stworzyli coś, co nazwali Raspberry Pi.

Co to jest to Raspberry Pi?

Jest to minikomputer. Mini tylko z rozmiaru, jednak ma możliwości takie jak inne pełnowymiarowe komputery. Można do niego podłączyć słuchawki, monitor, ma 4 porty USB, wejście Ethernet. A do tego jest wielkości paczki papierosów, karty kredytowej, czy kostki masła. Do tego jest kilkadziesiąt pinów, do których możemy podłączyć diody LED czy inne sterowniki. A potem spakować wszystko w niezbyt dużą torbę i bawić się dalej w innym miejscu. Cena takiej platformy to ok. 25 do 40 dolarów w zależności od wersji, bo są różne. Jeżeli chodzi o dysk, jest to zwykła karta pamięci. Jeżeli chodzi o systemy, to dokładniejsze informacje znajdziemy na blogu Raspberry. Są to różne dystrybucje Linuxa przystosowane do urządzeń składających się na ten komputer. Możemy mieć kilka kart pamięci i zmiana systemu będzie polegała na wymianie karty. Super sprawa, co nie :D? Najwięcej informacji oczywiście znajdziecie na wspomnianym blogu.

Jak zacząć?

No przede wszystkim trzeba wydać tę parę złotych na samą płytkę, nie ma rady. Do tego jakaś klawiatura, myszka, monitor, karta pamięci. To co praktycznie każdy ma. Potem zasysamy system, wrzucamy na kartę i rozpoczynamy instalację. Potem to już tylko kwestia wyobraźni 🙂

Co można na tym zrobić?

Ja bym się inaczej zapytał. Czego na tym nie da się zrobić. Przykłady? Proszę bardzo. Raspbery Pi może służyć jako serwer druku, centrum domowej rozrywki, z urządzeniami peryferyjnymi jako stacja pogodowa. Można łączyć kilka płytek w klaster. Przy wykorzystaniu Raspberry można także zacząć  zabawę z projektowaniem pojazdów autonomicznych, analizą obrazów itd. Oczywiście RPi służy tu tylko jako rejestrator 🙂 Polecam obejrzeć poniższy filmik:

Jedynym ograniczeniem, jak zawsze, jest tylko nasza wyobraźnia.

Projektów w internecie są tysiące:

i wiele wiele innych.

Z materiałów, z których korzystałem i które mogę polecić są jeszcze:

Podsumowanie

Jeżeli wcześniej nie słyszałeś o tym wspaniałym tworze, to mam nadzieję, że zaraziłem Cię swoją fascynacją tym małym urządzeniem. Wpis miał stanowić taką zajawkę i zbiór ciekawych linków tak, aby móc szybko przejrzeć, jak to się je. Poświęć te parę złotych na to i zacznij się bawić bez obaw, że coś zepsujesz. Kopię zapasową zrobisz kopiując kartę pamięci 🙂 Następnym razem pokażę własne podboje związane z tym urządzeniem. Tymczasem życzę Ci miłego wieczoru czy dnia i do zobaczenia spowrotem u mnie na blogu! 🙂

MagazineManager – czas zamodelować cz. 4

Wëllkomm! (luksemburski)

Jak się trzymasz? Co u Ciebie drogi Czytalniku? Mam nadzieję, że wszystko w porządku 🙂 Pora kontynuować modelowanie naszej aplikacji. Ostatnio omówiliśmy scenariusze przypadków użycia, co to jest i po co, jak się je tworzy. Jak zapewne widzisz, proces modelowania oprogramowania to logiczny ciąg kolejnych czynności, które prowadzą do przygotowania naprawdę dobrego gruntu do kodowania. Przyjrzyjmy się zatem jednemu ze scenariuszy przypadków użycia. Niech będzie ten dotyczący edycji danych o czasopiśmie:

1. Użytkownik naciska przycisk Edytuj.
2. System wyświetla formularz edycji czasopisma z uzupełnionymi aktualnymi danymi.
3. Użytkownik edytuje dane.
4. Użytkownik naciska przycisk Zapisz.
5. System pobiera dane z formularza.
6. System waliduje dane.
7. System aktualizuje dane w bazie.
8. System wyświetla komunikat o poprawnej aktualizacji danych.

Analiza scenariusza przypadku użycia

Spróbujmy teraz wyciągnąć z niego jakieś wnioski. Mam nadzieję, że pamiętasz z poprzedniego wpisu (jeżeli nie to zachęcam do przeczytania) o sposobie budowania zdań w scenariuszu – podmiot, orzeczenie, dopełnienie, krótkie, proste i rzeczowe zdania. Przeanalizujmy zatem co taka koncepcja może za sobą wnieść do tego scenariusza.

Podmiot mówi bezpośrednio o wykonawcy czynności opisanej – jest to aktor danego przypadku lub system. Cały scenariusz można sobie wyobrazić jako rozmowę aktora z systemem, gdzie słowami, które się wypowiada, czyli przekazuje drugiej osobie jest przepływ sterowania (sterowanie rozumiemy jako wykonanie czynności). Ciśnie mi się porównanie tej rozmowy do tańca, który jest jakby nie patrzeć rozmową pomiędzy kobietą a mężczyzną, tylko w takiej formie taniec może przenieść pełny bagaż emocji i odczuć. Taka luźna dygresja, która nie wiem czemu mi tu pasuje 😀

Orzeczenie to oczywiście czynność wykonywana w danym kroku. A co w kodzie determinuje wykonanie czynności? Tak, dokładnie, wywołanie metody! Jak się pewnie już domyślasz, w naszej aplikacji znajdą się metody aktualizujDane() czy walidujDane(), których argumentem będzie… No właśnie co?

Przechodzimy do dopełnienia. W dopełnieniu przemycamy elementy interfejsu użytkownika, np. przycisk, w kodzie zostanie utworzona tego typu klasa, lub klasy bezpośrednio związane z modelowaną aplikacją, np dane (w domyśle myślimy o danych czasopisma, jednak prawidłowo w napisany scenariusz powinien jednoznacznie na to wskazywać). Proste, prawda :)?

Jak widzisz, dobrze napisany scenariusz to skarb, z którego można wiele odczytać. Po przeanalizowaniu scenariusza można narysować diagram klas, który odwzoruje prawdziwą strukturę kodu, pracującą w projektowanej aplikacji.

Systematyzowanie kodu aplikacji

Czy te informacje, które wyciągamy ze scenariusza, da się w jakiś sposób pogrupować, usystematyzować, oprócz oczywistego wyłuskania klas i metod? Jasne, że tak. Chyba najbardziej widoczna grupa klas, to klasy odpowiadające za elementy interfejsu użytkownika. I w tym miejscu stop. Opowiemy sobie o wzorcach projektowych MVP i MVC, które swoją drogą różnią się od siebie niewiele, dlatego czasem ludzie stosują te nazwy wymiennie (co jest oczywiście błędem!).

MVC i MVP

Pomyślmy sobie tak. Na jakie warstwy możemy podzielić aplikację? No oczywiście na pewno warstwa odpowiadająca za wyświetlanie danych i cały interfejs graficzny. I to będziemy nazywać Widokiem, z ang. View. Drugą warstwą jest grupa klas bezpośrednio opisujących elementy naszego problemu, u nas czasopisma, egzemplarze etc. Tę warstwę nazywamy Model. No i teraz to musimy jedno z drugim połączyć. A gdzie występuje to połączenie? No… W scenariuszu. I za tę realizację scenariusza odpowiadają klasy Presentera. To własnie on odpowiada za wywołanie odpowiedniego widoku, pobranie z niego danych i przekazanie ich do modelu. Potem model po otrzymaniu danych i ich obrobieniu zwraca informację do prezentera i prezenter odpowiednio aktualizuje widok.

Czym zatem różni się MVP od MVC? Otóż jak w MVP to prezenter otrzymywał informację zwrotną od modelu i aktualizował widok, tak tutaj to już nie prezenter a kontroler odpowiednio wywołuje akcje na modelu i model sam bezpośrednio aktualizuje widoki.

Warto w Google wpisać mvp vs mvc i wtedy można dokładnie wczytać się w oby dwa podejścia. Polecam też zajrzeć do Wikipedii: MVP oraz MVC.

Podsumowanie

W najbliższym czasie, dziś już nie zdążę, biorę się za rozrysowanie diagramów klas na podstawie scenariuszy przypadków użycia. W swojej aplikacji wykorzystam architekturę MVP. Taki plan na najbliższe kilka dni. Zachęcam do wyszukiwania informacji na temat MVP i MVC, bo to jest bardzo aktualny i świeży temat. Tymczasem życzę Ci drogi Czytelniku miłego popołudnia, wieczoru lub dnia w zależności od tego, kiedy to czytasz. 🙂 Jeżeli podoba Ci się mój wpis, to udostępnij go proszę swoim znajomym, kliknij łapkę w górę na Facebooku i obserwuj mnie na Twitterze. Do zobaczenia! 🙂

TeX – dlaczego lepszy jest od Worda?

Merhaba! (turecki)

Sobota, 06.05.2017. Dawno mnie tutaj nie było, ostatni post wleciał 23.04. Było to spowodowane między innymi moim spontanicznym wypadem do Pragi ze znajomymi i odcięciem się od świata. 🙂 Bez internetu, telefonu. Bajka! Dało mi to niesamowitego kopa i dużo energii. No i oczywiście pozdrawiam moją ekipę, z którą tam byłem! 🙂

Udało mi się mieć 9 dni weekendu majowego, który już jutro niestety się kończy. Starałem się ten czas wykorzystać na odpoczynek, spędzić go z rodziną i przyjaciółmi. Jednak czas laby dobiega końca i trzeba troszkę popracować.

Dzisiejszy wpis będzie z kategorii szeroko rozumianego IT. Chciałbym Wam przedstawić narzędzie, które bardzo często wykorzystuję i bez którego nie wyobrażam sobie dzisiaj składania tekstu w tak łatwy i przyjemny sposób. Powitajcie TeXa! 🙂

Co to ten TeX?

Cytując Wikipedię: komputerowy system profesjonalnego składu drukarskiego, obejmujący zarówno specjalny język, jak i kompilator przygotowujący pliki w formatach wymaganych przez urządzenia graficzne (drukarki, naświetlarki). Użytkownik dostaje język oraz kompilator i za ich pomocą ma możliwość składania dokumentów w bardzo precyzyjny i przyjazny sposób. Szczególnie jest to przydatne narzędzie dla ludzi związanych z nauką, którzy często wstawiają do tekstu skomplikowane wzory, np. matematyczne czy chemiczne.

A może słyszałeś o LaTeXu?

LaTeX stanowi nakładkę na TeXa, która usprawnia, automatyzuje pewne czynności. Ja sam na co dzień używam LaTeXa.

Dlaczego LaTeX a nie Word?

  1. Przyjazny programiście – Tak naprawdę kodujemy strukturę dokumentu. Każdy programista woli chyba skrobnąć parę linijek, niż przekopywać się przez miliony ustawień w programie 🙂
  2. Kompatybilność – kto z nas nie miał takiego problemu: tworzysz dokument, który musi jakoś wyglądać, wysyłasz go komuś, w wersji edytowalnej, bo np. ma dopisać swoją część i u niego wszystko się rozjeżdża. Potem on odsyła Tobie i znów Tobie się wszystko rozjeżdża. Albo inny przykład, pobierasz formularz dokumentu z jakiejś strony, otwierasz u siebie i klops. O przejściu pomiędzy pakietem Office od Microsoftu a Libre Office czy Open Office nie wspomnę. Niejednemu z nas spędziło to sen z powiek, a co najmniej poirytowało. A tutaj sprawa jest prosta. Masz kod, który kompilujesz. W pełni kompatybilny, nie zależnie od tego czy korzystasz z Windowsa czy Linuksa.

W tych dwóch punktach zawarłem najważniejsze zalety korzystania z LaTeXa czy ogólnie z TeXa. Odkąd nauczyłem się korzystać z tego narzędzia na początku 2. roku studiów, Worda używam tylko do otwierania dokumentów, które dostaję w takim formacie oraz do tworzenia naprawdę prostych, mało ważnych dokumentów. W innym przypadku sięgam od razu do TeXa.

Jak zacząć z tych dobrodziejstw korzystać?

Potrzebujesz dwóch rzeczy: kompilatora oraz środowiska. Osobiście już od długiego czasu korzystam z takiej pary: kompilator MiKTeX oraz środowisko TexMaker. W następnym kroku musisz mieć oczywiście coś, co chcesz przygotować. Czy to poster, artykuł naukowy, książka, prezentacja. No i trzeba usiąść i pisać 🙂 Jak z programowaniem. Na początku spędzisz kilka godzin nad ogarnięciem, jak to wszystko działa. Ale potem tworzenie dokumentów stanie się przyjemnością 🙂

Skąd się uczyć?

Polecam zacząć od Wikipedii: https://pl.wikipedia.org/wiki/LaTeX oraz https://pl.wikipedia.org/wiki/TeX.

W internecie znajdziecie baaardzo dużo materiałów, zarówno w języku polskim jak i angielskim.

No i oczywiście dokładając do tego tutoriale w serwisie YouTube. Przykład możecie znaleźć również u mnie na GitHub, pisałem specyfikację funkcjonalną. Wtedy powiedziałem, że w kilku słowach Wam opowiem o TeXu, no i jest 🙂

Podsumowanie

Ten wpis stanowi taką zajawkę do poczytania o LaTeXu i spróbowania tego narzędzia. Mam nadzieję, że ułatwię Ci, drogi Czytalniku, start 🙂 Wpis krótki, ale w sam raz na rozruszanie się po majówce 🙂 Zatem do zobaczenia przy wpisie o projekcie!

1 2 3