Dam się poznać: mój projekt open source

Zgodnie z zapowiedzią w poprzednim wpisie (o prokrastynacji), postanowiłam wziąć udział w konkursie Daj się poznać organizowanym przez Macieja Aniserowicza z bloga devstyle.

Oznacza to, że w ciągu najbliższych dwóch miesięcy (lub do odwołania) dwa razy w tygodniu będę publikowała tu wpisy na temat mojego projekciku open source. Zrobi się trochę bardziej technicznie. Mam nadzieję, że nie pociągnie to za sobą exodusu Czytelników zaglądających tu w poszukiwaniu lżejszych tekstów okołoprogramistycznych. Postaram się zachować przyjazny ton.

Na co mi to?

Jedno słowo: motywacja.

Cztery słowa: najlepiej pracuję pod presją.

Wielu przyjaciół naiwnie wierzy w moje nieprzebrane pokłady ambicji i samozaparcia. W rzeczywistości, jak uczeń z oślej ławki, robię coś tylko wtedy, kiedy wiem, że ktoś na pewno mnie sprawdzi. W związku z tym pracę nad każdym większym przedsięwzięciem (nie przepadam za słowem „projekt”, chociaż akurat tu akurat pasuje) rozpoczynam od poszukiwań sprawdzacza.

Bądź moim sprawdzaczem.

Jeśli ktoś pokusi się o merytoryczne komentarze i podpowiedzi: tym lepiej dla mnie.

A na co mi sam blog? O tym chyba tutaj: O mnie.

Mój pomysł: szafbook

szafa
To jest moja garderoba. Praca nad dzisiejszym wpisem wymagała ode mnie między innymi uprzątnięcia sterty prania zalegającego na oknie i na desce do prasowania.

Opis problemu

  1. Mam dużo ubrań, a ciągle chodzę w tych samych, bo nie pamiętam, co jest w dolnych pokładach mojej szafy.
  2. Mam trochę ubrań na wymianę – z których wyrosłam 😉 ja lub moje dziecko.

Rozwiązanie i zarys funkcjonalności

Wymyśliłam sobie aplikację, która umożliwi mi skatalogowanie zawartości szafy oraz jej  przeszukiwanie, a także udostępnienie jej zawartości znajomym i ewentualną wymianę bądź wypożyczenia.

Szkic wymagań:

  1. Użytkownik zarządza jedną lub więcej szafami.
  2. Dodaje do szafy ubrania wraz ze zdjęciami i krótkim opisem. Ubrania są umieszczane w odpowiedniej kategorii (ręcznie lub poprzez analizę tekstu, a w bajkowej wersji full-wypas także przez analizę obrazu). Metadane muszą, oczywiście, zawierać rozmiar.
  3. Użytkownik może udostępnić szafę do przeglądania komuś ze swoich znajomych.
  4. Możliwe są wymiany i wypożyczenia.
  5. Dostępne jest semantyczne wyszukiwanie, np. „wszystkie czarne topy” albo „szalik pasujący do tego swetra”.

Technologie

Przyznam, że kusiła mnie szaleńcza idea stworzenia aplikacji webowej w Haskellu. Ostatecznie doszłam jednak do wniosku, że wolę uzupełnić swoją coraz bardziej dziurawą wiedzę na temat Javy. To mój ulubiony język programowania, a nie dotykałam go właściwie od dwóch lat (ponieważ wybór zajęć determinowała dziedzina, a nie preferencje programisty). W tym czasie tworzyłam za to kod w: Perlu, Pythonie, C++, Rubym, R.

Dlatego mimo że JEE to temat nudny i oklepany, tym właśnie chcę się zająć. Wśród rzeczy, których chcę użyć, nauczyć się, przypomnieć sobie lub o nich napisać, są:

  1. Java 8,
  2. jakiś framework webowy, pewnie Spring Boot,
  3. microservices (?),
  4. Maven,
  5. jakieś narzędzie do analizy statycznej,
  6. JUnit,
  7. Git/GitHub,
  8. jakieś darmowe narzędzie do ciągłej integracji, pewnie Jenkins,
  9. jakieś narzędzie do przetwarzania danych RDF/OWL,
  10. któraś nierelacyjna baza danych,
  11. Android w dalekiej, dalekiej przyszłości 🙂

Mój pomysł podoba mi się, bo:

  1. Mogę rozwiązać istniejący problem (być może tylko mój).
  2. Bardzo rzadko mam okazję pisać coś od zera.
  3. Zorientuję się, co się dzieje w Javie.
  4. To przedsięwzięcie da się przekuć w serię przyjaznych wpisów na temat różnych technologii.
  5. Wszystko to trochę wygłup. Zawsze w cenie.

Mój pomysł nie podoba mi się, bo:

  1. Temat jest „dziewczyński”.
  2. Technologie, których chcę użyć, są pospolite.
  3. Od strony technicznej to nic odkrywczego.
  4. Wątpię, żebym w czasie trwania konkursu była w stanie wyprodukować aplikację wartą pokazania.

Informacje techniczne

  1. Wpisy konkursowe będę oznaczać tagiem daj się poznać.
  2. GitHub: https://github.com/1nk4/szafbook
  3. www: http://szafbook.pl/

PS.

Zespół cieśni nadgarstka to najwyraźniej przypadłość nie tylko czynnych programistów i pracowników linii produkcyjnych, ale także młodych matek noszących coraz cięższego stwora.

erlich
Pora zabrać się do roboty! Nie mam profesjonalnych ortez, jak Erlich. Zamiast nich używam ochraniaczy do jazdy na rolkach. Naprawdę pomagają.

Komentarze

13 myśli nt. „Dam się poznać: mój projekt open source”

  1. Coś jak to: http://quantifiedawesome.com/clothing ?

    (Wiem, to nie to samo, ale mi się skojarzyło.) Fajny pomysł. Żaden z argumentów „przeciw” do mnie nie przemawia (w szczególności 1 – z tą różnicą, że akurat wypożyczanie jest mi całkiem obojętne), argumenty „za” są ok (oczywiście, poza tym, że Java – tzn. ja też będę próbował w Javie, ale bynajmniej nie dlatego, że ją lubię, prędzej dlatego, żeby na własnej skórze się przekonać, jaki to niefajny język… Taki ze mnie masochista;-).)

  2. Hej! Moim zdaniem pomysł jest świetny! Sama używam już podobnej aplikacji (MyDressing – polecam przyjrzeć się jej, w celu zaczerpnięcia inspiracji – działa na Androidzie). Szkoda, że nie zdecydowałaś się na Haskella, ale może jeszcze przyjdzie czas na takie hardcory 😉
    Z chęcią będę używać Twojej aplikacji, więc mam nadzieję że dociągniesz projekt do końca.

    1. Ja és néha szerintem elfogadható magyarázat, hogy az események mögött az emberek és az elégedetlenségük áll. A 56 os forradalom mögött ki állt? vagy a 68-as cseh események mögött? volt már ilyen a modern történelemben.Szerintem itt is ez az alapszitu, utána már persze mindenki megpróbál élni az új helyezttel (megpróbálm mondom, nem biztos h sikerül is neki :)üdvwp

  3. Tak na marginesie, pomyślałem, że Cię zapytam: poleciłabyś jakąś sensowną książkę o Javie? Moje wymagania (nie wszystkie muszą być spełnione, być może ten zestaw jest nawet wewnętrznie sprzeczny, ale im więcej, tym lepiej):
    – nie przegadana (nie musi być dla początkujących) – Thinking in Java straszy objętością, a ja naprawdę nie chcę kolejny raz czytać objaśnienia, co to jest pole, metoda i dziedziczenie, tylko jak się te rzeczy realizuje w Javie
    – w miarę aktualna – Java ponoć ostatnio dostała funkcje anonimowe i domknięcia, skądinąd miło, że Java wreszcie dobiła do technologii z lat 70-tych:-P.
    – dająca się czytać bez komputera (i tak nie będę robił żadnych ćwiczeń – szkoda mi czasu, wolę kodować to, co sam chcę/potrzebuję)
    – nie potrzebuję opisu biblioteki standardowej czy takich tam – to jest w dokumentacji, chcę to, czego tam nie ma: rozsądnego wprowadzenia (szczególnie do bardziej zaawansowanych rzeczy – przypisanie, instrukcję warunkową i pętlę for już umiem;-))
    – lepiej po angielsku, boję się jakości tłumaczeń – raz (skuszony ceną) kupiłem książkę z Helionu, to był duży błąd

    Znasz coś takiego?

  4. Napisałaś o technologiach i narzędziach, które wykorzystasz do stworzenia aplikacji. A gdzie zamierzasz hostować swoją aplikację? Skorzystasz z PaaSa czy masz może inny pomysł na wdrażanie/zarządzanie?
    Do listy narzędzi dorzuciłbym https://coveralls.io/ 🙂 A do CI polecam Travisa.

    1. Dziękuję za sugestie, pewnie skorzystam!
      Co do hostowania, to jedna z pierwszych rzeczy, które muszę przemyśleć. Mój WordPress stoi na wirtualce hostowanej przez domeny.pl. Muszę sprawdzić, jakie oni oferują możliwości. Chyba nie będę mieć na początku miliona użytkowników? 🙂 Bo jak już będę mieć, to może przepiszę wszystko na AWS?

      1. Widzę, że w domeny.pl możesz mieć VPS. Ale wtedy musisz sama zająć się konfiguracją środowiska (Java, baza danych, itp. ) + sposobem wdrażania.
        PaaS, np. Heroku lub OpenShift zapewnia Ci całe środowisko, a po git push masz wdrożoną nową wersję. No i nie przywiązujesz się do konkretnych rozwiązań jak w przypadku AWS (w teorii). Więcej info znajdziesz tu https://docs.spring.io/spring-boot/docs/current/reference/html/cloud-deployment.html i tu https://github.com/kolorobot/openshift-diy-spring-boot-sample

          1. Korzystam z OpenShift, ale mam tam aplikację nie javową. W ramach darmowego konta możesz mieć tam 3 aplikacje. Jednym z większych ograniczeń tego konta jest to, że jeżeli aplikacja nie jest używania przez 24h, to jest pauzowana i uruchamiana przy kolejnym żądaniu.
            Troszkę bawiłem się też Pivotal Web Services https://run.pivotal.io/ i Spring Bootem, było łatwo i przyjemnie.
            Zakładam, że na Twoje potrzeby (java+nierelacyjna baza danych) każde z tych rozwiązań będzie ok, a ważnym kryterium wyboru mogą okazać się koszty.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *