|
|
Grupa ElenX
|
|
|
|
|
|
# Projekty:
|
|
|
|
|
|
# Raicoone
|
|
|
|
|
|
**Raicoone [czytaj: rajkuun]** - Redundant Array of Independent Clouds 0+1
|
|
|
|
|
|
R - Redundant
|
|
|
|
|
|
A - Array of
|
|
|
|
|
|
I - Independent
|
|
|
|
|
|
C - Clouds
|
|
|
|
|
|
O - 0+
|
|
|
|
|
|
ONE - 1
|
|
|
|
|
|
**RAID** - Redundant Array of Independent Disks, to technologia, która łączy ze sobą dyski twarde, w celu (0) połączenia kilku dysków w jedną przestrzeń (np. dwa dyski po 100 GB dadzą dzięki RAID powierzchnię 200 GB) oraz (1) redundantne kopie zapasowe, co chroni przed uszkodzeniami. Raicoone będzie robił to samo, ale używał chmur zamiast fizycznych dysków. Można o nim myśleć jak o Hadoopie na wyższym poziomie abstrakcji, gdyż Hadoop zakłada, że mamy dostęp (ssh albo fizyczny) do maszyn, na których operujemy, natomiast Raicoone idzie dalej - operujemy na przestrzeni do której nie mamy de facto dostępu (ssh ani fizycznego).
|
|
|
|
|
|
Prowadzę FTP ElenX, na który studenci mogą wrzucać i pobierać materiały do studiów. Zacząłem prowadzić tego VPSa jakieś 6 lat temu i prowadzę go do dziś, przez ten czas uzbierało się 100 000 (sto tysięcy) plików, które razem ważą 150 GB, w związku z czym zarządzanie tym przerasta moje możliwości nie tylko jako człowieka-śmiertelnika ale też administratora-programisty (bardzo długo walczyłem skryptami PHPowymi i Pythonowymi, np. wywalanie duplikatów, usuwanie pustych folderów, auto przenoszenie materiałów do prawidłowych katalogów, checkpointy, backupy i reverty po aktach wandalizmu itd itp).
|
|
|
|
|
|
W skrócie, to już nie jest do ogarnięcia przez człowieka - potrzebne jest rozwiązanie programistyczne.
|
|
|
|
|
|
Projekt Raicoone ma w założeniu rozwiązać wszystkie powyższe problemy za jednym zamachem. Raicoone ma automatycznie tworzyć oraz zarządzać dostępem do różnych chmur, takich jak MEGA, DropBox, Google Drive, OneDrive itd itp synchronizować oraz łączyć wiele kont w jedno. Powinien również czuwać nad dostępnością zasobów (HA - High Availability) tak, aby skasowanie pliku z jednej chmury nie zakłócało pracy systemu.
|
|
|
|
|
|
W ramach projektu będziemy zaimplementować możliwie najwięcej różnych chmur oraz zaprojektować generyczny mechanizm wykrywania degeneracji macierzy jak też cykliczną regeneracje typu point-to-point w warstwie machine-to-machine, czyli mówiąc po ludzku - wszystko bez udziału człowieka. W tym sensie wytworzone oprogramowanie ma być "inteligentne" czyli dynamicznie reagować na zmiany w środowisku.
|
|
|
|
|
|
Ważne jest zauważenie, że ponieważ polegamy na zewnętrznych serwisach, które mogą w każdej chwili odmówić nam dostępu (zablokować konto, usunąć pliki itd) bardzo ważne jest zamodelowanie braku zaufania do dostawcy chmury, co robimy poprzez system aktorowy Akka, i co za tym idzie - programujemy aktorowo.
|
|
|
|
|
|
Finalnie, aplikacja powinna się składać z backendu webowego, natomiast klienci powinni być dostępni na w sumie wszystkie liczące się platformy, czyli:
|
|
|
|
|
|
* desktop - Windows, Linux, Mac
|
|
|
|
|
|
* mobile - Android, iOS
|
|
|
|
|
|
# Epomis
|
|
|
|
|
|
**Epomis** - to nazwa larwy (zwierzęcia) żyjącego na bagnach. Właściwie jedyna ciekawa rzecz, którą można powiedzieć o niej to sposób polowania. Żuk ten poluje w sposób reverse predator czyli najpierw wystawia się umyślnie na pożarcie w roli niby-ofiary (celem ściągnięcia prawdziwej ofiary), a następnie, gdy zostanie zaatakowany, sam przyjmuje rolę predatora. Ten dwucentymetrowy insekt jest w stanie w 9 na 10 przypadków zabić krokodyla (!) czy żabę, wychodząc z boju bez zadrapania.
|
|
|
|
|
|
Aktualnie rynek IT jest "rynkiem pracownika, a nie pracodawcy". Osobiście otrzymuję średnio 16 ofert pracy dziennie, i tak jak w przypadku projektu Raicoone, to zwyczajnie przerasta już możliwości przerobowe człowieka - potrzebne jest oprogramowanie.
|
|
|
|
|
|
Jest już wiele softu, który usprawnia proces rekrutacji, ale usprawnia go od strony rekrutera - natomiast aplikujący musi wszystko robić ręcznie, czyli poprzez maila i telefon. Przy ilości ofert z rynku IT jest to awykonalne, a jednocześnie każdy chce wybrać najlepszą z ofert, a jak wiadomo, dziś wszystkie oferty są "atrakcyjne finansowo, z szerokim pakietem benefitów i możliwościami pracy w jednej z najdynamiczniej rozwijających się firm w tej części Wszechświata".
|
|
|
|
|
|
Przez pierwsze 5 razy słuchania wypracowania maturalnego pod tytułem "dlaczego nasza firma jest najlepsza na świecie" jest to po prostu śmieszne. Po 40 razie już tylko żałosna strata cennego czasu. Projekt Epomis ma na celu odwrócenie ról predatora i ofiary na rynku pracy IT.
|
|
|
|
|
|
Epomis ma cyklicznie przeszukiwać wszystkie liczące się portale z ogłoszeniami o pracę ([praca.pl](http://praca.pl/) [pracuj.pl](http://pracuj.pl/) goldenline linkedin infopraca ...) oraz zbierać je w bazie danych. Następnie, w oparciu o zdefiniowane przez użytkownika końcowego reguły przetwarzania (jak na przykład: ogłoszenia zawierające słowo "java" lub "android" lub "architekt" oraz "warszawa") automatycznie aplikować na takie pozycje (bez udziału człowieka).
|
|
|
|
|
|
Następnie, system powinien oczekiwać na maila od rekrutera (ze standardową śpiewką "czemu nasza firma jest najlepsza") oraz od razu dawać mu link na stronę internetową, na której może zarezerwować spotkanie (w oparciu o Google Calendar) z programistą. Aplikacja na podstawie podanego adresu spotkania powinna znaleźć optymalny termin na przeprowadzenie rozmowy (np. może się okazać, że jesteśmy umówieni na inną rozmowę w okolicy) oraz przy użyciu Google Maps oszacować czas dojazdu i zaproponować go rekruterowi. Rekruter powinien mieć zawsze możliwość anulowania oraz zmiany terminu spotkania. Od drugiego maila od rekrutera, komunikacje przejmuje już aplikant.
|
|
|
|
|
|
Bez takiego harmonogramowania, można w tygodniu przeprowadzić co najwyżej 25 rozmów rekrutacyjnych (godziny 10, 12, 14, 16, 18 razy 5 dni tygodnia) podczas gdy w rzeczywistości, by nadążyć za podażą ogłoszeń trzeba by mieć miejsce na minimum 30 spotkań, a aby móc spokojnie zjeść obiad pomiędzy nimi oraz nie zostawiać ostatniego rekrutera z jedynym możliwym terminem - potrzebna jest ostra optymalizacja i zaawansowane algorytmy harmonogramowania - to już jest zadanie dla maszyny, gdyż zwyczajnie przerasta człowieka.
|
|
|
|
|
|
Finalnie, aplikacja powinna się składać z części serwerowej oraz webowego frontendu dla rekrutera plus aplikacja mobilna (Android) dla kandydata.
|
|
|
|
|
|
# Czego oczekujemy? Jak dołączyć?
|
|
|
|
|
|
Jeśli chcesz z nami pisać część serwerową (backend) to prześlij proszę na maila [Nauka@ElenX.net](mailto:Nauka@ElenX.net) link do swojego GitHuba lub BitBucketa w którym masz działający Hello World w Springu. Konkretniej chodzi o odpalenie takiego przykładowego projektu: [http://projects.spring.io/spring-boot/](http://projects.spring.io/spring-boot/)
|
|
|
|
|
|
Jeśli natomiast jesteś zainteresowany pisaniem aplikacji na telefony (np. Android) lub frontend to niech ten GitHub czy BitBucket zawiera odpowiedniego działającego Hello Worlda w np. Androidzie.
|
|
|
|
|
|
Ponadto, wybierz proszę dowolnego taska (każdy wybiera sam dla siebie co mu się podoba) z którejkolwiek kolumny TODO z któregokolwiek z dwóch projektów i link do taska też dołącz do maila:
|
|
|
|
|
|
Raicoone: [https://trello.com/b/n1rR4LIw/raicoone](https://trello.com/b/n1rR4LIw/raicoone)
|
|
|
|
|
|
Epomis: [https://trello.com/b/aR42OQgB/epomis](https://trello.com/b/aR42OQgB/epomis)
|
|
|
|
|
|
UWAGA: Podkreślam - należy wybrać taska można tylko z kolumn TODO (nie DOING, nie DONE, nie ON HOLD).
|
|
|
|
|
|
Druga istotna sprawa: używamy na frontendzie Vaadina, a więc frontend też jest pisany w Javie. Zero javascriptu/html/css ze strony programisty. Także jeśli chcesz się uczyć javy to spokojnie możesz brać taski (też) z frontendu.
|
|
|
|
|
|
Wszystko piszemy w celach edukacyjnych, bez stresu w wolnym czasie dzielimy się wiedzą w grupie około 95 osób. Koncept jest taki, aby zamiast N osób pisało same jednoosobowe projekciki, to zróbmy wspólnie jeden czy dwa duże, jednocześnie ucząc się od siebie wzajemnie jak najwięcej i pomagając sobie. Przykładowo, jak piszesz sam to nikt Ci code review nie robi, więc jeśli robisz coś źle, to nawet o tym się nie dowiesz i będziesz utrwalać złe nawyki.
|
|
|
|
|
|
Gdy zrobisz Hello Worlda i wybierzesz taska to zaprosimy Cię do grupy na Slacku ( [https://slack.com/](https://slack.com/) ) bo to nasze główne medium komunikacyjne (konkretniej kanał #general), dlatego uprasza się uprzejmie o zainstalowanie aplikacji na telefon i komputer by zajrzeć chociaż raz na tydzień, byśmy wiedzieli, że w ogóle żyjesz. Opcjonalnie, jeśli Ci to pomoże, to możemy załatwić zaliczenie praktyk studenckich. Sposób skonfigurowania i uruchomienia projektów opisuje rozdział następny, a kolejne omawiają metodyki i techniki programistyczne używane w projekcie. Nie każdy task ich wymaga.
|
|
|
|
|
|
**Na Slacku jest bot o nazwie @howdy** który dwa razy w tygodniu pyta ludzi czy żyją, czy mają z czymś problem i jak im ogólnie idzie. **Bardzo proszę odpowiadać **temu** **botowi, bo inaczej my nie będziemy wiedzieć czy ktoś jest po prostu zajęty i nie ma chwilowo czasu (to napisać botowi i nie ma problemu) czy nas olał. Będziemy domyślnie zakładać drugi wariant i **się** **z takimi osobami** **rozstawać** by nie blokowały tasków innym (aktywnym) osobom i postępu projektu. Także jeśli nie masz minimum 2h+ tygodniowo to prawdopodobnie nauka w naszej grupie nie jest dla Ciebie i lepiej kup jakiś kurs za 10 000 PLN który na pewno zrobi z Ciebie wielkiego programistę w tydzień bez żadnego wysiłku.
|
|
|
|
|
|
Podsumowując, do przyjęcia potrzebny jest komplet:
|
|
|
|
|
|
1. link do wybranego taska z TODO (**nie zapomnijcie o tym**) oraz
|
|
|
|
|
|
2. link do GitHuba/Bitbucketa z hello worldem (lub czymś ambitniejszym) Spring Boota/Androida.
|
|
|
|
|
|
Na Slacku siedzimy na kanale #general i tam zadawajcie wszystkie swoje pytania. Kanały #raicoone oraz #epomis są dla botów. **Nie pisać** do ludzi **na priv** w sprawach związanych z projektem (czyli nieprywatnych). Od tego jest #general. Tak samo proszę **nie pisać** na tego **maila** **gdy ma się** **już** **dostęp** **do Slacka**, bo mail nie jest od tego, tylko na kanał.
|
|
|
|
|
|
Na pierwszego maila zawsze odpowiada bot, także jeśli dostaniecie zautomatyzowaną odpowiedź mimo tego, że wysłaliście link do taska i githuba, to po prostu wyślijcie jeszcze raz - drugi raz już czyta człowiek.
|
|
|
|
|
|
Z bliżej nieznanego powodu, serwery pocztowe Microsoftu (outlook.com, hotmail.com, …) odrzucają nasze maile i nie jesteśmy w stanie na nie odpowiedzieć, także wysyłajcie z jakichkolwiek innych.
|
|
|
|
|
|
Nie staraj się przeczytać od razu całego tego doca, bo jest po prostu za duży. Traktuj go jako encyklopedie. Do czas aż dołączysz to tylko pierwsze 3 rozdziały Cię interesują (Raicoone, Epomis, Czego oczekujemy? Jak dołączyć?) |
|
|
\ No newline at end of file |