#main, 5 września 2016

By 5 September 2016 September 11th, 2016 #main

Ostat­nio na blogu pub­liku­je­my nieco mniej, ponieważ więk­szość naszej uwa­gi sku­pia orga­ni­za­c­ja Devoxx4Kids. Obow­iąz­ki obow­iązka­mi, ale o #mainie nie zapom­i­namy — przy­jem­nej lektury!

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

Podsumowanie ankiety z zeszłego tygodnia

wyniki ankiety.001

Zde­cy­dowanie najwięcej osób chci­ało­by zobaczyć Angu­lar­JS’a — wprawdzie eksper­ta­mi w tej dziedzinie sami nie jesteśmy, ale postaramy się przy­go­tować wartoś­ciowe mate­ri­ały (praw­dopodob­nie we współpra­cy! :) ). Spring Boot na pewno także się pojawi, podob­nie jak ser­wisy RESTowe.

Projekt dopasowany do osobowości

Cza­sem chci­ałabyś pewnie spróbować nowej tech­nologii czy po pros­tu zro­bić jak­iś pro­jekt, ale nie masz pomysłu. Z pomocą przy­chodzi ser­wis skillcrusk.com z propozy­c­ja­mi dopa­sowany­mi do jed­nego z 16 typów osobowoś­ci. Na ile fak­ty­cznie są one zgodne (oraz na ile tego typu testy fak­ty­cznie opisu­ją osobowość) pozosta­je zagad­ką, ale inic­jaty­wa na pewno ciekawa, a i pro­jek­ty warte uwa­gi w wol­nym czasie :)

Pro­jek­ty dla każdego w ser­wisie skillcrush.com

Project ARA zamrożony?

Kilkukrot­nie wspom­i­nal­iśmy o pro­jek­cie ARA — mod­ułowym tele­fonie. Nieste­ty, wszys­tko wskazu­je na to, że pro­jekt ten został zaw­ies­zony i w najbliższym cza­sie nie zostanie ukończony.

Na szczęś­cie rzeczy­wis­tość nie znosi próżni, szczegól­nie w zakre­sie nowych tech­nologii — warty uwa­gi jest np. bliź­ni­aczy pro­jekt Puz­zle­Phone lub Fairphone

Artykuł w ser­wisie geek.com
Pro­jekt PuzzlePhone
Pro­jekt Fairphone
Inne podob­ne pro­jek­ty na stron­ie phonebloks.com

Zrób to sam — telefon

Sko­ro pro­jekt ARA został zaw­ies­zony, alter­naty­wą jest też zbu­dować tele­fon samodziel­nie ;) Wprawdzie nie będzie to smart­fon z Androi­dem, ale pro­jekt zde­cy­dowanie ciekawy choć­by żeby zbu­dować go razem z dzieck­iem czy samemu pobaw­ić się elektroniką.

Strona pro­jek­tu w ser­wisie SeedStudio

Odpowiedź na pytanie z zeszłego tygodnia

A pytal­iśmy o to: czym jest pro­filowanie aplikacji i kiedy należy je wykonać?

Pro­filowanie aplikacji to pro­ces, w którym badamy wyda­jność cza­sową poszczegól­nych kom­po­nen­tów aplikacji. W najbardziej pod­sta­wowym wymi­arze pole­ga na pomi­arze cza­su, jaki maszy­na wirtu­al­na ‘spędza’ w konkret­nych meto­dach, klasach, paki­etach itp oraz bada­niu iloś­ci wywołań poszczegól­nych metod. Pozwala to na znalezie­nie wąs­kich gardeł wyda­jnoś­ci całego sys­te­mu i w efek­cie usunię­cie prob­lemów i poprawę wydajności :)

W kwestii rozwiązań tech­nicznych ist­nieje kil­ka podejść:

  • najbardziej poprawnym z punk­tu widzenia pomi­arów jest uży­cie stosownego tzw. java agent — są to mod­uły, które współpracu­ją z maszyną wirtu­al­ną i dostar­cza­ją infor­ma­cji także o cza­sie wykony­wa­nia metod — w ten sposób dzi­ała­ją komer­cyjne pro­duk­ty, jak np. YourK­it, a także (prze­ważnie) te wbu­dowane w IDE (warte uwa­gi jest narzędzie wbu­dowane w Net­beans — naszym zdaniem jedyny powód, dla którego warto go zainstalować ;) )
  • dru­gi sposób pole­ga na uży­ciu aspek­tów — dzię­ki AOP może­my pro­filować nasze aplikac­je w banal­ny sposób, po pros­tu dołącza­jąc zależność do pro­jek­tu (np. perf4j czy JAMon) lub pisząc krót­ki kod. Wadą tego rozwiąza­nia jest to, że ogranicza nas do pub­licznych metod klas, a także to, że pomi­ary cza­su nie będą pre­cyzyjne (ponieważ uwzględ­ni­a­ją narzut AOP) — w zde­cy­dowanej więk­szoś­ci przy­pad­ków nie jest to jed­nak konieczne i takie pode­jś­cie w zupełnoś­ci wystarczy

W zde­cy­dowanej więk­szoś­ci przy­pad­ków uży­cie bib­liote­ki w pro­jek­cie poz­woli Ci ziden­ty­fikować i zlokali­zować prob­le­my z wyda­jnoś­cią — jeśli jed­nak pracu­jesz nad pro­jek­tem, w którym ułam­ki sekund mają znacze­nie, potrze­bu­jesz raczej komer­cyjnego rozwiązania.

Czym się różni char od byte w przypadku pracy ze Stringami w Javie?

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! 

Ken Thompson

Współcześnie ist­nieje kil­ka sys­temów oper­a­cyjnych, w zależnoś­ci od zas­tosowa­nia wybier­amy jeden z nich i nie martwimy się niczym innym. Na przełomie lat 60 i 70 ubiegłego wieku nie było jed­nak tak pros­to — zbu­dowanie ‘aplikacji’ w opar­ciu o kom­put­ery właś­ci­wie rów­nało się ze stworze­niem nowego sys­te­mu. Ist­ni­ało kil­ka ‘uni­w­er­sal­nych’, ale były one na tyle specy­ficzne, że nie zawsze opła­cało się ich uży­wać. W lat­ach 60’tych Ken Thomp­son pra­cow­ał w Bell Labs, m.in. nad pro­jek­tem MULTICS — uni­w­er­sal­nego sys­te­mu oper­a­cyjnego, który miał obsługi­wać łączność sieciową (wtedy — ARPANET). Ken uznał, że pro­jekt jest zbyt skom­p­likowany i nie będzie dzi­ałał opty­mal­nie i zaczął pracę nad nowym sys­te­mem — nazwanym później Unix. Jak pokaza­ła his­to­ria — miał rację, a Unix jest obec­nie pod­stawą dzi­ała­nia więk­szoś­ci urządzeń i sys­temów oper­a­cyjnych (zarówno Lin­uxy, jak i OS X — zarówno w wer­s­jach kon­trolu­ją­cych Twój tele­fon z iOSem czy Androi­dem — wywodzą się ze świa­ta Unixa). Z uwa­gi na budowę sys­te­mu, Ken uznał także że zasługu­je na włas­ny język — i tak stworzył język B, który był pod­stawą do stworzenia języ­ka C (który z kolei wye­wolu­ował w C++).

W późniejszych lat­ach kilkukrot­nie pode­j­mował się pro­jek­tów związanych z sys­tema­mi oper­a­cyjny­mi (np. sys­te­mem Plan 9, który miał być rozpros­zonym następcą Unixa czy Infer­no — sys­te­mem, który może dzi­ałać samodziel­nie na różnych plat­for­ma­ch jako maszy­na wirtu­al­na lub jako aplikac­ja w innych sys­temach — funkcjonu­jąc podob­nie do JVMa w takim wypad­ku). Inic­jaty­wy te jed­nak nie przyjęły się i nie są obec­nie powszech­nie stosowane. Współt­worzył także stan­dard kodowa­nia UTF‑8 (który jest właś­ci­wie stan­dar­d­em we współczes­nym Internecie) oraz język pro­gramowa­nia Go (co ciekawe, w wywiadzie przyz­nał, że inspiracją do stworzenia Go była frus­trac­ja związana ze skład­nią C++ ;) ). Obec­nie kon­tynu­u­je pracę w Google.

Drze­wo życia sys­te­mu UNIX — najważniejsze pochodne i implementacje
Strona na wikipedii poświę­cona Kenowi Thompsonowi
Wywiad z Ken­em z roku 2011

Pytanie na ten tydzień

Najważniejszym przełomem w his­torii IT było
  • Add your answer