Kolejny poniedziałek, kolejny #main (tym razem na czas ;) ). Przez najbliższych kilka tygodni pytania techniczne będą dotyczyć architektury aplikacji. Gotowi?
Cykl #main to punkt początkowy Waszego tygodnia, prasówka, w której zbieramy ciekawe linki, dzielimy się informacjami, a także podsyłamy programistyczne zadanie. Mamy nadzieję, że w ten sposób umilimy Wam poniedziałkowy powrót do rzeczywistości ;)
Grafika w nagłówku pochodzi z serwisu Freepik.com
Nigdy więcej nie zastanawiaj się nad nazwą klasy!
Oczywiście z przymróżeniem oka, ale znaleźliśmy generator nazw klas dla Javy, który pozwala uczynić je bardziej ‘Enterprise’. Oczywiście nie zalecamy stosować w praktyce, ale jesteśmy ciekawi ile takich ‘kwiatków’ znajdziesz w swoim projekcie? :>
Projekt z punktu widzenia UX designera
Jakiś czas temu odbyła się Confitura 2016, czyli jedna z najlepszych Javowych konferencji w Polsce ;) Dziś, odsyłamy do jednego z wystąpień, które porusza temat UX designu, tego po co właściwie on jest w projekcie i jak działają jego podstawowe mechanizmy. Takie podstawy to must have każdego świadomego developera.
Rekrutowanie Inżynierów w 2016
W naszej branży rekrutacja znacznie przekracza zwykłe wystawienie ogłoszenia -> zbieranie CV, a działy HR prześcigają się w pomysłach. Mniej lub bardziej udane, kreatywne kampanie są już obecne na polskim rynku. Co najlepiej przyciąga inżynierów, a co wywołuje raczej uśmiech? O tym przeczytacie w poniższym artykule. Oczywiście, śmiało możecie dopisywać swoje przemyślenia.
Odpowiedź na pytanie z zeszłego tygodnia
A pytaliśmy o to: na czym polega koncept mikroserwisów?
Mikroserwisy to jedna z popularnych ostatnio koncepcji dotycząca budowy skomplikowanych systemów. Przez długi czas dominującym podejściem była architektura SOA (Service Oriented Architecture), w której wyróżniamy różne serwisy pełniące funkcje biznesowe (często same serwisy były dość skomplikowanymi systemami). Głównym celem SOA jest podział dużego systemu na mniejsze części, łatwiejsze w zarządzaniu i komunikujące się za pomocą określonego protokołu. Architektura mikroserwisów to pójście krok dalej — podział serwisów na jeszcze drobniejsze elementy. W SOA jeden serwis wystawia wiele operacji, które są ze sobą w jakiś sposób powiązane (np. operują na podobnym typie danych). W architekturze mikroserwisów, każdy serwis odpowiada za jedną operację (stąd przedrostek mikro).
Ponieważ im system jest prostszy, tym łatwiej jest nim zarządzać. Jednocześnie współcześnie chmury obliczeniowe pozwalają bardzo tanio uruchamiać wiele serwerów na raz, co dodatkowo upraszcza tego rodzaju podejście. Nie jest to jednak remedium na wszystkie problemy — debugowanie czy zapewnianie audytu w takim środowisku jest bardzo utrudnione i wymaga specyficznej infrastruktury.
Przykładem firmy, która w ten sposób zbudowała większość swoich systemów jest Netflix.
Czym jest aplikacja monolityczna?
Oczywiście zachęcamy do samodzielnego odpowiedzenia na pytanie. Za tydzień nasza odpowiedź.
Więcej pytań technicznych z poprzednich mainów wraz z linkami do odpowiedzi znajdziesz tutaj!
Edsger W. Dijkstra
Jeśli czytałaś jakąkolwiek książkę o algorytmach lub uczyłaś się ich na studiach / przygotowując się do pracy w IT, nazwisko z pewnością wyda Ci się znajome. Tak, chodzi o Tego Dijkstre ;)
Dijkstra był holenderskim naukowcem, który zajmował się głównie teoretycznymi aspektami informatyki oraz języków programowania. Urodzony w 1930 roku należał do tzw. generacji założycieli IT — osób, które definiowały to, jak ma się rozwijać ta branża i w którym kierunku ma iść. Dijkstra wyróżniał się także w tym towarzystwie, jego prace (głównie, ale nie tylko teoretyczne) dotyczyły m.in. budowy systemów operacyjnych, systemów rozproszonych, konceptów programowania sekwencyjnego i współbieżnego, sposobu działania kompilatorów i wielu innych aspektów.
W latach 60’tych IT nie było uważane za dziedzinę akademicką — były nimi matematyka oraz fizyka, a odkrycia na obu tych polach łączono przy projektowaniu i tworzeniu maszyn liczących i pierwszych komputerów. Dijkstra dostrzegał jednak potrzebę, a przede wszystkim wartość w rozwoju tych zagadnień jako osobnej gałęzi nauki — był pionierem badań w tym zakresie. Jego wysiłki w sformalizowanie IT jako dziedziny nauki zapoczątkowały inżynierię systemów informatycznych pod postacią jaką znamy obecnie.
Wiele z efektów jego prac stosujesz świadomie lub nie każdego dnia. Zapoczątkował i prowadził badania w wielu dziedzinach podstawowych, m. in. działania systemów współbieżnych (czego efektem są np. semafory oraz tzw. mutexy — podstawowe jednostki budulcowe współczesnych komputerów wielozadaniowych, bez których nie byłby możliwy szybki internet czy wielozadaniowy system operacyjny), algorytmów (np. znajdowania najkrótszej ścieżki w grafie, co było i jest częścią protokołów sterujących ruchem pomiędzy Twoją przeglądarką, a serwerem na drugim końcu świata) oraz odporności na problemy (bez tego systemy informatyczne nie miałyby miejsce np. w finansach czy opiece medycznej).
Jest autorem koncepcji programowania strukturalnego — coś, co obecnie przyjmujemy za pewnik, a ówczesnie było nowum. W uproszczeniu chodzi o to, że kod ma określoną strukturę (np. metody, obiekty, funkcje itp), a nie jest po prostu listą instrukcji, gdzie miejsce metod i funkcji zajmują polecenia typu ‘goto’ (czyli np. teraz przeskocz do tej linijki w kodzie). Dijkstra słusznie postrzegał to jako główne źródło problemów i błędów, na bazie jego teorii powstały języki takie jak Fortran 77 czy C (i później C++). Współcześnie wszystkie języki wysokopoziomowe bazują na wspomnianej koncepcji.
Poruszane tematy to tylko niewielki wycinek pracy Dijkstry — zapisał się na kartach historii jako autor wielu badań fundamentalnych dla współczesnego świata IT i technologii w ogóle.
Notka biograficzna na wikipedii
Notka biograficzna na stronach IEEE
Notka biograficzna na stronie nagrody Turinga
Archiwum manuskryptów na stronie uniwersytetu w Teksasie