admin 0Comment

Jeśli nie wiesz, czego dotyczy ten tekst, możesz chcieć zerknąć tutaj. A w skrócie -w tej serii wpisów przedstawiam (z pewnym poślizgiem czasowym) nad czym pracowałem w poszczególnych tygodniach mojej nauki programowania. Dzisiaj czas na podsumowanie szóstego tygodnia mojej nauki.

 

Pierwsze kroki w tworzeniu własnych aplikacji za pomocą Django

 

W ostatnim tygodniu pisałem przykładowe aplikacje webowe przechodząc tutoriale uczące podstaw korzystania z Django. Po nabyciu w ten sposób minimum wiedzy nadszedł czas na próbę stworzenia czegoś własnego. Na początek nie chcę oczywiście porywać się na nic skomplikowanego, stwierdziłem więc, że do napisania niewielkiej web appki wykorzystam jeden z moich małych projektów, jakie piszę ucząc się praktycznego wykorzystywania Pythona. Jest to aplikacja pozwalająca parsować tekst uzyskany poprzez jego wklejenie na stronie lub z pliku w formacie txt/docx lub pdf a następnie odnaleźć w nim ewentualne błędy, takie jak:

  • małe litery po kropce
  • powtórzone wyrazy
  • wielokrotne spacje
  • błędne słowa i wyrażenia
  • słowa z brakującymi przecinkami

W aplikacji desktopowej do sporządzenia listy błędnych słów/wyrażeń lub też słów, przed którymi powinniśmy stawiać przecinki etc. wykorzystywałem pliki tekstowe – wiem, że nie jest to optymalne rozwiązanie, ale umożliwiało mi to łatwą modyfikację tych list. W przypadku aplikacji webowej początkowo mam zamiar umieścić listy w ciele programu – kolejne nieoptymalne rozwiązanie, które na pewno w przyszłości zmienię, jednak jest to moja pierwsza aplikacja webowa tworzona przy pomocy Django i nie chcę jej przesadnie komplikować. Aplikacja domyślnie ma przyjmować tekst lub uploadować pliki we wspomnianych wyżej formatach i wyświetlać ewentualne znalezione błędy. Nic skomplikowanego na początek nauki Django. Pisanie jej jednak idzie żmudnie ze względu na moją nikłą jak na razie wiedzę, jednakprzy każdym kroku uczę się czegoś nowego i o to właśnie przecież mi chodzi. Możliwe, że apka miejscami ssie jeśli chodzi o dobre praktyki i zalecane rozwiązania w Django ale mam nadzieję, że i to z czasem uda mi się poprawić.  Kod tego i innych programów możecie podejrzeć na moim koncie GitHub.

 

Kontynuuję refaktoryzację praktycznego programu, napisanego w OOP

 

Chodzi mi o dramatycznie napisany program, o którym wspominałem w poprzednim tekście z serii 🙂 . Chciałbym by po jego napisaniu stał się on bazą do kolejnego, już nieco bardziej skomplikowanego projektu w Django. A na razie? Na razie napisane przeze mnie klasy wyglądają o niebo przejrzyściej niż w pierwszej wersji programu, natrafiam jednak już na problemy związane z OOD (czyli tym, jak zaprojektować logikę danego programu, by był on możliwie optymalny i przejrzysty). Chodzi mi o takie kwestie jak używanie (lub nie) getterów/setterów (co to? O tym niżej), których w Pythonie powinno się unikać, wątpliwości w którym miejscu programu umieszczać pewne części jego logiki etc. etc. Myślę, że konieczne tutaj będzie skorzystanie z pomocy bardziej doświadczonych programistów. Na marginesie: miło jest przechodzić powoli z kategorii problemów „Jak to w ogóle stworzyć?” do kategorii „Wiem, jak to stworzyć, ale jak to zrobić by było optymalne i przejrzyste?”. Mimo wielu wątpliwości, co do tego jak w praktyce powinny być pisane programy OOP, jestem zadowolony bo dostrzegam tutaj progres względem mojego stanu wiedzy sprzed chociażby miesiąca.

 

Java? nihil novi!

 

Java w tym momencie bardzo pomaga mi zrozumieć, co jest specyfiką danego języka programowania – fajnym przykładem jest, wspomniane wyżej, używanie lub nie tzw. getterów i setterów, czyli metod(=funkcji), pozwalających zmieniać i wyświetlać wartości pól (czyli zmiennych) danego obiektu. To, co w Javie jest zalecane (korzystanie z geterów/setterów) w Pythonie już takie nie jest, widać to właśnie m. in. po podejściu do stosowania zasady hermetyzacji danych.

Kontynuuję m. in. tutorial obecny na oficjalnej stronie Oracle, jednak zaczynam robić to już dość wybiórczo – raz, że brakuje w nim nacisku na pisanie praktycznych programów, dzięki czemu możemy ćwiczyć praktyczne wykorzystanie języka a dwa – mam wrażenie, że zagłębianie się w pewne bardziej skomplikowane kwestie nie ma teraz sensu, a zgodnie z zasadą JIT (Just In Time), lepiej będzie opanować je, kiedy wyniknie to z praktycznej tego konieczności.  Java nadal ma być drugorzędna, jeśli chodzi o moją edukację programistyczną, co nie znaczy jednak, że nie powinienem uczyć się jej w sposób sensowny i przemyślany.

 

***

A na koniec tego wpisu – ważne wieści. Nie będę kontynuował tej serii wpisów. Dlaczego? Z dwóch powodów – już niedługo cotygodniowe wpisy zaczęłyby odnosić się do czasu, kiedy zaangażowałem się w konkurs Daj Się Poznać 2017, i oznacza to, że ta seria pokrywałaby się (przynajmniej w znacznej części) z wpisami realizowanymi w ramach wspomnianego konkursu. Drugi powód jest taki, że chciałbym skupić się na opisywaniu mojej nauki programowania z perspektywy konkretnych zagadnień, które poznaję (takie jak np. obsługa baz danych, konkretne frameworki czy narzędzia, wzorce projektowe, testy etc.) a nie z perspektywy czasu (czyli, takich jak tutaj, cotygodniowych wpisów). Po namyśle te podejście wydaje mi się sensowniejsze, zwłaszcza, że teraz większość zagadnień jest dość skomplikowana i zapoznawanie się z nimi zajmuje znacznie więcej niż tydzień, więc często w kolejnych wpisach tej serii musiałbym zaczynać od „w tym tygodniu kontynuuję zagadnienia, o których pisałem w tamtym tygodniu. I poprzednim (…)” etc.

Dodaj komentarz