Musicie wybaczyć nam opóźnienie i przeczytać #maina z tygodniowym poślizgiem. Obiecujemy, że mamy naprawdę fajną wymówkę z tym związaną, ale o niej na koniec. Zaczynamy?
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 ;)
Polscy studenci bezkonkurencyjni na zawodach samolotów bezzałogowych
W organizowanych ostatnio zawodach samolotów bezzałogowych zespół z Politechniki Warszawskiej okazał się bezkonkurencyjny — wygrał we wszystkich 3 kategoriach zdobywając 9 z 13 nagród! Serdecznie gratulujemy sukcesu, a zainteresowanych odsyłamy do artykułu poniżej po więcej szczegółów :)
70 rocznica zaprogramowania komputera EINIAC
Prawdopodobnie słyszałaś kiedyś o EINIACu — jednym z pierwszych komputerów, pionierskim projekcie pod wieloma względami. To, czego prawdopodobnie nie wiesz, to fakt, że 70 lat temu doszło do jego pomyślnego uruchomienia, a zawdzięczamy to 6 kobietom zatrudnionym do tego celu. W porównaniu z współczesnym programowaniem ich praca była jednak zdecydowanie bardziej wymagająca — wyobraź sobie, że dostajesz do ręki układy scalone wraz z ich wymaganiami w kwestii synchronizacji czasowej, poziomów logicznych, mocy itp, do tego lutownicę i cel — uruchomienie tego wszystkiego razem w taki sposób, aby wykonywał konkretne działania. Mniej więcej tak wyglądała ta praca — wiedziały, jak zbudowana jest ta bestia (27 ton!), co mają osiągnąć i nic więcej — nikt wcześniej nie robił nic podobnego. Zainteresowanych odsyłamy do artykułu jubileuszowego oraz ciekawej inicjatywy — we współczesnych technologiach zaprojektowano komputer o identycznych możliwościach i parametrach pracy — mieści się on na 1/4 znaczka pocztowego…
Poranna kawa wprost do ręki
Jednym z najpoważniejszych problemów współczesnego, pierwszego świata jest zdobycie porannej kawy. Na szczęście firma nSKY przychodzi z odsieczą (i dronami), planując uruchomić usługę dostarczania kawy w cenie 3$ — prosto do rąk zamawiającego z najbliższej kawiarni za rogiem. Choć mamy pewne zastrzeżenia, co do faktycznego problemu, który firma stara się rozwiązać, technologicznie może to być bardzo ciekawa droga — drony te muszą uzyskać pozwolenia agencji lotniczych, co do tej pory nie udało się większym graczom (z większymi dronami, co było źródłem części zastrzeżeń) — być może tym razem się uda i czeka nas drono-rewolucja w skali mini?
Odpowiedź na pytanie z zeszłego tygodnia
A pytaliśmy o to: jaka jest różnica pomiędzy klasami String oraz StringBuilder/StringBuffer?
Podstawowa różnica polega na tym, że obiekty typu String są niezmienne (immutable) — tzn. wszelkie operacje na tych obiektach powodują w rzeczywistości utworzenie nowego obiektu i jego zwrócenie. Z kolei obiekty typu StringBuffer/StringBuilder służą właśnie do operowania na ciągach znaków, w efekcie czego można ostatecznie utworzyć obiekt typu String. Innymi słowy, jeśli chcemy ‘skleić’ wiele ciągów znaków ze sobą, lepiej użyć StringBuildera, dzięki czemu każde ‘sklejenie’ nie będzie powodowało utworzenia nowego obiektu (w Javie operacja np. “abcd” + “efghi” w rzeczywistości tworzy obiekt StringBuilder, który jest używany do połączenia obu Stringów, po czym jest wywoływana jego metoda toString() )
Różnica pomiędzy StringBuffer a StringBuilder jest związana z aplikacjami wielowątkowymi — StringBuffer pozwala na bezpieczną pracę z jednym obiektem z wielu wątków, podczas gdy StringBuilder nie gwarantuje bezpiecznej pracy z wieloma wątkami na raz, ale jest przez to minimalnie szybszy.
Więcej pytań technicznych z poprzednich mainów wraz z linkami do odpowiedzi znajdziesz tutaj!
James H. Ellis
James Ellis urodził się w Wielkiej Brytanii, choć jego rodzice pochodzili z Australii. Z powodu komplikacji przy porodzie ledwo co przeżył — lekarze stwierdzili wtedy, że z powodu tych doświadczeń będzie on upośledzony umysłowo. Nie mogli mylić się bardziej ;)
Już w szkole przejawiał duży talent matematyczny, dzięki czemu bez problemu zdobył dyplom z fizyki i podjął pracę w laboratorium badawczym urzędu pocztowego. Niedługo potem przeniósł się do GCHQ (brytyjski odpowiednik agencji NSA), gdzie pracował nad tajnymi projektami (były to lata zimnej wojny). O tym, jak ogromny wpływ jego odkrycia mają na współczesny świat, większość usłyszała dopiero w 1997 — ponad 30 lat po dokonaniu przełomowych odkryć!
Głównym odkryciem, jakiego dokonał James było to, co znamy dzisiaj jako PKC (lub, popularniejsze w Polsce, PKI — public key cryptography/infrastructure). Idea nie była nowa, pochodziła z lat 40, ale wcześniej nie udało się jej zastosować — chodziło o to, aby zapewnić bezpieczną komunikację z wykorzystaniem ogólnodostępnej infrastruktury. Takie podejście pozwoliłoby nie tylko na szerokie zastosowanie szyfrowania (np. w biznesie, kontaktach handlowych itp — ówcześnie korzystały z niego właściwie wyłącznie mocarstwa), ale także zwiększenie bezpieczeństwa poprzez ‘rozmycie’ informacji istotnych w masie informacji mniej ważnych (co naturalnie utrudniłoby i zwiększyło koszty podsłuchiwania i odszyfrowywania wiadomości przez ‘wrogów’). Na bazie jego pracy powstał także protokół Diffiego-Hellmana do bezpiecznej wymiany kluczy. Samo PKC (PKI) to zbiór reguł i opisów jak może działać bezpieczna, powszechna kryptografia. Opisuje role, działania, zagrożenia i środki bezpieczeństwa związane z publicznym uwierzytelnianiem i szyfrowaniem — zbiór tych reguł jest podstawą tego, co obecnie znamy jako SSL i certyfikaty dla serwerów (to wycinek całego zbioru, ale jednak ten, który znalazł najszersze zastosowanie).
Niestety za życia nie doczekał się on należnego mu uznania — poza pasjonatami kryptografii i bezpieczeństwa, jego dokonania nie były szerzej znane. Dopiero w ostatnich latach wiedza na temat jego dokonań jest coraz bardziej popularyzowana.
PS. Powiedzieliśmy sobie tak ;)
A właściwie, zgodnie z polskim prawem oświadczyliśmy, że wstępujemy w związek małżeński :) Super sprawa, polecamy! I postaramy się Wam napisać co nie co w ramach #lazySunday, o naszym podejściu do organizowania ślubu — było mocno agile’owe i bardzo nam się to sprawdziło — jak widać, metodyki zwinne można wykorzystywać też w życiu codziennym:)