#main, 3 października 2016

By 3 October 2016 #main

Kole­jny poniedzi­ałek, kole­jny #main (tym razem na czas ;) ). Przez najbliższych kil­ka tygod­ni pyta­nia tech­niczne będą doty­czyć architek­tu­ry aplikacji. Gotowi?

Cykl #main to punkt początkowy Waszego tygod­nia,  prasówka, w której zbier­amy ciekawe lin­ki, dzie­limy się infor­ma­c­ja­mi, a także podsyłamy pro­gramisty­czne zadanie. Mamy nadzieję, że w ten sposób umil­imy Wam poniedzi­ałkowy powrót do rzeczywistości ;)
Grafi­ka w nagłówku pochodzi z ser­wisu Freepik.com

Podsumowanie ankiety z zeszłego tygodnia

wyniki-ankiety-001

Zde­cy­dowanie najważniejsze w przy­pad­ku wyzwań okaza­ły się konkret­ny pomysł oraz sys­tem­aty­czne zada­nia do wyko­na­nia. Bierze­my to pod uwagę i planu­je­my naszą małą niespodziankę dalej ;)

Nigdy więcej nie zastanawiaj się nad nazwą klasy!

Oczy­wiś­cie z przym­róże­niem oka, ale znaleźliśmy gen­er­a­tor nazw klas dla Javy, który pozwala uczynić je bardziej ‘Enter­prise’. Oczy­wiś­cie nie zale­camy stosować w prak­tyce, ale jesteśmy ciekawi ile takich ‘kwiatków’ zna­jdziesz w swoim projekcie? :>

Gen­er­a­tor nazw klas

Projekt z punktu widzenia UX designera

Jak­iś czas temu odbyła się Con­fi­tu­ra 2016, czyli jed­na z najlep­szych Javowych kon­fer­encji w Polsce ;) Dziś, odsyłamy do jed­nego z wys­tąpień, które porusza tem­at UX designu, tego po co właś­ci­wie on jest w pro­jek­cie i jak dzi­ała­ją jego pod­sta­wowe mech­a­nizmy. Takie pod­stawy to must have każdego świadomego developera.

Link do wystąpienia

Rekrutowanie Inżynierów w 2016

W naszej branży rekru­tac­ja znacznie przekracza zwykłe wys­taw­ie­nie ogłoszenia -> zbieranie CV, a dzi­ały HR prześ­ci­ga­ją się w pomysłach. Mniej lub bardziej udane, kreaty­wne kam­panie są już obec­ne na pol­skim rynku. Co najlepiej przy­cią­ga inżynierów, a co wywołu­je raczej uśmiech? O tym przeczyta­cie w poniższym artykule. Oczy­wiś­cie, śmi­ało może­cie dopisy­wać swo­je przemyślenia.

Link do artykułu 

Odpowiedź na pytanie z zeszłego tygodnia

A pytal­iśmy o to: na czym pole­ga kon­cept mikroserwisów?

Mikroser­wisy to jed­na z pop­u­larnych ostat­nio kon­cepcji doty­czą­ca budowy skom­p­likowanych sys­temów. Przez dłu­gi czas domin­u­ją­cym pode­jś­ciem była architek­tu­ra SOA (Ser­vice Ori­ent­ed Archi­tec­ture), w której wyróż­ni­amy różne ser­wisy pełniące funkc­je biz­ne­sowe (częs­to same ser­wisy były dość skom­p­likowany­mi sys­tema­mi). Głównym celem SOA jest podzi­ał dużego sys­te­mu na mniejsze częś­ci, łatwiejsze w zarządza­niu i komu­niku­jące się za pomocą określonego pro­tokołu. Architek­tu­ra mikroser­wisów to pójś­cie krok dalej — podzi­ał ser­wisów na jeszcze drob­niejsze ele­men­ty. W SOA jeden ser­wis wys­taw­ia wiele oper­acji, które są ze sobą w jak­iś sposób pow­iązane (np. ope­ru­ją na podob­nym typ­ie danych). W architek­turze mikroser­wisów, każdy ser­wis odpowia­da za jed­ną oper­ację (stąd prze­drostek mikro).

Ponieważ im sys­tem jest prost­szy, tym łatwiej jest nim zarządzać. Jed­nocześnie współcześnie chmury obliczeniowe pozwala­ją bard­zo tanio uruchami­ać wiele ser­w­erów na raz, co dodatkowo upraszcza tego rodza­ju pode­jś­cie. Nie jest to jed­nak remedi­um na wszys­tkie prob­le­my — debu­gowanie czy zapew­ni­an­ie audy­tu w takim środowisku jest bard­zo utrud­nione i wyma­ga specy­ficznej infrastruktury.

Przykła­dem firmy, która w ten sposób zbu­dowała więk­szość swoich sys­temów jest Netflix.

Czym jest aplikacja monolityczna?

Oczy­wiś­cie zachę­camy do samodziel­nego odpowiedzenia na pytanie. Za tydzień nasza odpowiedź.

Więcej pytań tech­nicznych z poprzed­nich mainów wraz z linka­mi do odpowiedzi zna­jdziesz tutaj! 

Edsger W. Dijkstra

Jeśli czy­tałaś jakąkol­wiek książkę o algo­ryt­mach lub uczyłaś się ich na stu­di­ach / przy­go­towu­jąc się do pra­cy w IT, nazwisko z pewnoś­cią wyda Ci się zna­jome. Tak, chodzi o Tego Dijkstre ;)

Dijk­stra był holen­der­skim naukow­cem, który zaj­mował się głównie teo­re­ty­czny­mi aspek­ta­mi infor­maty­ki oraz języków pro­gramowa­nia. Urod­zony w 1930 roku należał do tzw. gen­er­acji założy­cieli IT — osób, które defin­iowały to, jak ma się rozwi­jać ta branża i w którym kierunku ma iść. Dijk­stra wyróż­ni­ał się także w tym towarzys­t­wie, jego prace (głównie, ale nie tylko teo­re­ty­czne) doty­czyły m.in. budowy sys­temów oper­a­cyjnych, sys­temów rozpros­zonych, kon­cep­tów pro­gramowa­nia sek­wen­cyjnego i współ­bieżnego, sposobu dzi­ała­nia kom­pi­la­torów i wielu innych aspektów.

W lat­ach 60’tych IT nie było uważane za dziedz­inę aka­demicką — były nimi matem­aty­ka oraz fizy­ka, a odkrycia na obu tych polach łąc­zono przy pro­jek­towa­niu i tworze­niu maszyn liczą­cych i pier­wszych kom­put­erów. Dijk­stra dostrze­gał jed­nak potrze­bę, a przede wszys­tkim wartość w roz­wo­ju tych zagad­nień jako osob­nej gałęzi nau­ki — był pio­nierem badań w tym zakre­sie. Jego wysił­ki w sfor­mal­i­zowanie IT jako dziedziny nau­ki zapoc­zątkowały inżynier­ię sys­temów infor­maty­cznych pod postacią jaką znamy obecnie.

Wiele z efek­tów jego prac sto­su­jesz świadomie lub nie każdego dnia. Zapoc­zątkował i prowadz­ił bada­nia w wielu dziedz­i­nach pod­sta­wowych, m. in. dzi­ała­nia sys­temów współ­bieżnych (czego efek­tem są np. semafory oraz tzw. mutexy — pod­sta­wowe jed­nos­t­ki budul­cowe współczes­nych kom­put­erów wielozadan­iowych, bez których nie był­by możli­wy szy­b­ki inter­net czy wielozadan­iowy sys­tem oper­a­cyjny), algo­ryt­mów (np. zna­j­dowa­nia najkrót­szej ścież­ki w grafie, co było i jest częś­cią pro­tokołów steru­ją­cych ruchem pomiędzy Two­ją przeglą­darką, a ser­w­erem na drugim końcu świa­ta) oraz odpornoś­ci na prob­le­my (bez tego sys­te­my infor­maty­czne nie miały­by miejsce np. w finansach czy opiece medycznej).

Jest autorem kon­cepcji pro­gramowa­nia struk­tu­ral­nego — coś, co obec­nie przyj­mu­je­my za pewnik, a ówczes­nie było nowum. W uproszcze­niu chodzi o to, że kod ma określoną struk­turę (np. metody, obiek­ty, funkc­je itp), a nie jest po pros­tu listą instrukcji, gdzie miejsce metod i funkcji zaj­mu­ją polece­nia typu ‘goto’ (czyli np. ter­az przeskocz do tej lin­ij­ki w kodzie). Dijk­stra słusznie postrze­gał to jako główne źródło prob­lemów i błędów, na bazie jego teorii pow­stały języ­ki takie jak For­tran 77 czy C (i później C++). Współcześnie wszys­tkie języ­ki wysokopoziomowe bazu­ją na wspom­ni­anej koncepcji.

Poruszane tem­aty to tylko niewiel­ki wycinek pra­cy Dijkstry — zapisał się na kar­tach his­torii jako autor wielu badań fun­da­men­tal­nych dla współczes­nego świa­ta IT i tech­nologii w ogóle.

Not­ka biograficz­na na wikipedii
Not­ka biograficz­na na stronach IEEE
Not­ka biograficz­na na stron­ie nagrody Turinga
Archi­wum manuskryp­tów na stron­ie uni­w­er­syte­tu w Teksasie

Pytanie na ten tydzień

Czym jest dla Ciebie architek­tu­ra aplikacji?
  • Add your answer

O architek­turze aplikacji słyszał każdy, ale częs­to mamy na ten tem­at różne wyobraże­nia — czym dla Ciebie jest architek­tu­ra aplikacji?