Po krótkiej, świątecznej przerwie wracamy do Was z kolejnym #main!
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 ;)
micro:bits
BBC finansuje bardzo ciekawą inicjatywę — w brytyjskich szkołach fundują zestawy micro:bits, które są rozdawane dzieciom w wieku 7 lat, a które mają zachęcać do nauki programowania i ‘zabawy’ technologią. micro:bits to nic innego jak mikrokomputer (podobny do Raspberry PI jeśli chodzi o budowę, choć o słabszej specyfikacji), kilka elementów pozwalających na interakcje (diody, przyciski) oraz Bluetooth pozwalający na komunikację ze smartfonami czy komputerem. Całość dopełnia przyjazne środowisko do programowania — od najprostszych do naprawdę skomplikowanych projektów oraz masa przykładów, pomysłów i tutoriali dostępnych na stronie.
Czekamy na coś takiego także u nas!
Mój kolega robot
W ostatnim czasie Google pochwalił się osiągnięciami swojego działu robotyki — przejętej firmy Boston Dynamics. Robot o imieniu Atlas jest humanoidem — ma kształt mniej więcej zbliżony do człowieka i porusza się w podobny sposób. Inżynierowie firmy zaprezentowali robota w trudnych warunkach — na nierównym terenie, z przeszkodami, śliskim podłożu, specjalnie wytrącając go z równowagi i sprawność z jaką radzi sobie z tym wszystkim naprawdę zadziwia. A także, jak się okazuje, straszy — choć robot w zamierzeniu ma pomagać w transporcie i docierać w trudnodostępne miejsca, wielu odebrało to jako krok do budowy armii robotów. W efekcie firma Google coraz głośniej mówi o sprzedaży całej firmy, jednym z powodów jest nieoficjalnie właśnie negatywne skojarzenie.
Cokolwiek by nie mówić, sam robo robi naprawdę ogromne wrażenie i kto wie, być może za parę lat zamiast kuriera, to on będzie nam przynosił paczki!
W temacie sztucznej inteligencji raz jeszcze
Wspomniana w poprzedniej notce firma Google ma też inne ważne osiągnięcie w ostatnim czasie — sztuczna inteligencja stworzona przez tą firmę wygrała w grę Go z mistrzem z Korei. Ten pozornie błahy sukces ma jednak ogromne znaczenie — w przeciwieństwie do gier takich jak szachy, Go (dość mało popularne w naszej części świata) jest postrzegane jako gra wymagająca intuicji, nie da się obliczeniowo wybrać najlepszej drogi, prowadzącej do zwycięztwa.
System, nazwany AlphaGo, jest tak naprawdę tylko demonstratorem i platformą testową. Technolgie, które są w nim wykorzystywane i opracowywane przy jego okazji, są wykorzystywane przez Google w różnych dziedzinach, od rozpoznawania twarzy na zdjęciach, po dostosowywanie wyników wyszukiwania do osobistych preferencji użytkownika.
Jak poprawić jakość swojego kodu?
Jakość kodu dla większości z nas ma duże znaczenie — stąd piszemy testy, programujemy TDD lub BDD, dokształcamy się i wymieniamy wiedzą. Za niedługo będzie ku temu kolejna okazja — konferencja Quality Excites. Tegoroczna, już 5 edycja, ponownie skupi się na poprawie jakości oprogramowania poprzez testy, zautomatyzowane narzędzia i poprawę świadomości zagadnień QA wśród programistów. W tym roku spotkanie odbędzie się 25 czerwca w gliwicach.
Obecnie trwa Call For Papers — jeśli chciałabyś podzielić się swoją wiedzą i doświadczeniem w tematach związanych z zapewnianiem jakości, zgłoś się jako prelegent!
Odpowiedź na pytanie z zeszłego tygodnia
A pytaliśmy o to: czym jest i jak działa Garbage Collector w Javie?
Garbage collection to mechanizm, który automatycznie zwalnia nieużywaną pamięć w naszej aplikacji. W językach niższego poziomu (np. C) każde utworzenie np. tablicy czy listy wymaga ‘ręcznego’ zwolnienia związanej z nią pamięci. W dużych aplikacjach łatwo o tym zapomnieć lub zrobić błąd, co prowadzi do tzw. wycieków pamięci — nieużywana pamięć nie jest odpowiednio zwalniana, przez co wraz z czasem wykorzystanie pamięci RAM przez aplikację cały czas rośnie. Aby zabezpieczyć przed tym programistę, współczesne języki automatycznie zarządzają pamięcią, a mechanizmy garbage collection służą właśnie temu, aby ‘zidentyfikować’, które obszary pamięci są już niepotrzebne.
Jednym z popularniejszych sposobów, który ma zastosowanie także w Javie, jest tzw. zliczanie referencji. Polega to na tym, że zaczynamy od głównego obiektu/wątku aplikacji i przechodzimy przez wszystkie referencje — tzn. odwiedzamy każdy obiekt, do którego można się jakkolwiek dostać z poziomu kodu (np. jest on przypisany do zmiennej/pola lub jest elementem kolekcji). Dla każdego obiektu w pamięci jesli zliczana ilość takich odwołań — stąd nazwa metody. Obiekty, do których nie ma możliwości się ‘dostać’, są traktowane jako nieużywane i usuwane z pamięci. Oczywiście zagadnienie jest dużo bardziej złożone — niektóre obiekty nie mogą być usunięte, w innych mamy zależności cykliczne, które trzeba odpowiednio obsłużyć, ale sama zasada działania tak właśnie wygląda.
Java sama decyduje o tym, kiedy uruchomić Garbage Collector — nie możemy na niej tego wymusić. Możemy ‘zasugerować’, korzystając z wywołania System.gc(), ale Java może nasze wywołanie zignorować.
Więcej szczegółów technicznych znajdziesz na stronach Oracle
Więcej pytań technicznych z poprzednich mainów wraz z linkami do odpowiedzi znajdziesz tutaj!
Kevin Mitnick
Myśląc o hakerach często mamy w głowie obraz osoby zamkniętej w piwnicy, zapatrzonej w ekran i wpisującej magiczne komendy. Najczęściej nijak ma się to jednak do rzeczywistości.
Jednym z najbardziej znanych współczesnych hakerów jest z pewnością Kevin Mitnick — auto wielu książek i obecnie ekspert od kwestii bezpieczeństwa. Jego historia zaczęła się od zabaw z telefonami — wtedy jeszcze w dużej mierze analogowymi — i bezpłatnemu dzwonieniu oraz przełączaniu sieci telefonicznych (to tzw. phreaking). Wraz z upowszechnieniem się internetu jego ataki coraz częściej skupiały się na firmach informatycznych i rządowych systemach komputerowych. Co ciekawe, większość z jego dokonań bazowała bardziej na socjotechnice i wykorzystywaniu zaufania / niewiedzy ludzi niż na zaawansowanym technologicznie przełamywaniu zabezpieczeń.
Poszukiwany przez FBI został aresztowany w 1995 roku i po odbyciu kary zajął się kwestią bezpieczeństwa systemów informatycznych, prowadzi także związaną z tym działalność pod nazwą Defensive Thinking Inc. (obecnie promowaną jako Mitnick Security). Wydał także kilka książek, obecnie często gości na konferencjach i wykładach związanych z cyberbezpieczeństwem.