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.
Spis treści
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

Opis problemu
- Mam dużo ubrań, a ciągle chodzę w tych samych, bo nie pamiętam, co jest w dolnych pokładach mojej szafy.
- 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ń:
- Użytkownik zarządza jedną lub więcej szafami.
- 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.
- Użytkownik może udostępnić szafę do przeglądania komuś ze swoich znajomych.
- Możliwe są wymiany i wypożyczenia.
- 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ą:
- Java 8,
- jakiś framework webowy, pewnie Spring Boot,
- microservices (?),
- Maven,
- jakieś narzędzie do analizy statycznej,
- JUnit,
- Git/GitHub,
- jakieś darmowe narzędzie do ciągłej integracji, pewnie Jenkins,
- jakieś narzędzie do przetwarzania danych RDF/OWL,
- któraś nierelacyjna baza danych,
- Android w dalekiej, dalekiej przyszłości 🙂
Mój pomysł podoba mi się, bo:
- Mogę rozwiązać istniejący problem (być może tylko mój).
- Bardzo rzadko mam okazję pisać coś od zera.
- Zorientuję się, co się dzieje w Javie.
- To przedsięwzięcie da się przekuć w serię przyjaznych wpisów na temat różnych technologii.
- Wszystko to trochę wygłup. Zawsze w cenie.
Mój pomysł nie podoba mi się, bo:
- Temat jest „dziewczyński”.
- Technologie, których chcę użyć, są pospolite.
- Od strony technicznej to nic odkrywczego.
- Wątpię, żebym w czasie trwania konkursu była w stanie wyprodukować aplikację wartą pokazania.
Informacje techniczne
- Wpisy konkursowe będę oznaczać tagiem daj się poznać.
- GitHub: https://github.com/1nk4/szafbook
- 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.

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;-).)
TeamCity Justyna, TeamCity 🙂
No wobec takiej argumentacji… 😉
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.
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
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?
Podpytałam znajomych. Polecają coś Horstmanna (http://helion.pl/autorzy/cay-s-horstmann,cayhor.htm) lub Core Java (http://www.amazon.com/Core-Java-I–Fundamentals-10th/dp/0134177304). Ale to drugie to cegła.
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.
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?
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
Super! Oszczędziłeś mi sporo poszukiwań. Czy sam z tego korzystasz?
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.