Kolejny poniedziałek, kolejny #main! Dzisiaj m.in. o tym, co ma piernik do wiatraka i mała wycieczka w przeszłość z PTI.
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 ;)
Podsumowanie ankiety z zeszłego tygodnia
Jak się okazuje jednym z najważniejszych aspektów telefonu jest jego system operacyjny! Dopiero na kolejnych pozycjach znalazły się cena, czas pracy na baterii czy jakość robionych zdjęć a nawet producent — zdaje się, że programiści lubią Androida :)
Stypendia dla dziewczyn w IT
Ostatnio coraz częściej pojawiają się inicjatywy wspierające start w branży nowych technologii — tym razem trafiliśmy na dość ciekawy program stypendialny dla dziewczyn. Jako że nabór wniosków trwa do 30 czerwca, zachęcamy do spróbowania i złożenia wniosku!
Zabawy danymi i niezwykłe korelacje
W języku polskim mamy powiedzenie ‘co ma piernik do wiatraka’ — okazuje się, że może mieć bardzo wiele (a przynajmniej na podstawie danych). Spurious correlations to zbiór ciekawych korelacji pomiędzy fizycznie niezwiązanymi danymi, które dają do myślenia — może jednak coś w tym jest ;)
Archiwum polskiej informatyki
Bardzo wiele osób jest przekonana że rewolucja informatyczna odbyła się za oceanem i później dotarła też do nas — o ile częściowo jest to prawda (przynajmniej z punktu widzenia dostępności elektroniki konsumenckiej), to Polacy mają też wiele zasług w jej rozwoju — szczególnie w obrębach analizy logicznej oraz technologii wytwarzania. Więcej ciekawostek, biografii i różnych informacji związanych z historią informatyki z perspektywy naszego kraju znajdziesz na stronie historiainformatyki.pl — są tam m.in. archiwalne materiały udostępnione przez PTI (Polskie Towarzystwo Informatyczne) — polecamy!
(nie do końca) cyber — waluty
Ta sytuacja jest ciekawa na 2 płaszczyznach — ale po kolei ;) W ostatni piątek miała miejsce jedna z największych kradzieży ostatniego czasu — skradziono 50 mln $. Mechanizm (jak się wydaje póki co) był banalnie prosty — ponieważ mówimy o jednej z kryptowalut, przestępca wykorzystał bug w kodzie, który pozwolił mu ‘ponawiać’ transakcje transferu określonej ilości pieniędzy, pomijając sprawdzenie czy ma do tego prawo. I w tym miejscu zaczynają się ciekawe rzeczy.
Ponieważ wartość kryptowaluty jest zaszyta w kodzie programu, który ją obsługuje, jednym z pomysłów na ‘anulowanie’ tej kradzieży jest modyfikacja kodu programu w taki sposób, żeby udawał że te transfery nie zostały dokonane. Brzmi to w porządku, w końcu dokonano kradzieży — ale pojawia się pytanie co się stanie, jeśli jeden z twórców zapragnie ‘anulować’ któryś z dokonanych przez siebie ‘przelewów’ ? Czy nadal jest to kryptowaluta — w założeniu niepodatna na wpływy polityczne, oparta jedynie na matematyce — skoro decyzją grupy programistów można tworzyć ‘wyjątki’ ?
Z drugiej strony jest to ciekawy inżyniersko problem — system, z którego wykradziono kwotę został napisany w języku Solidity — ot, kolejnym wysokopoziomowym języku, który w założeniu ma uprościć tworzenie oprogramowania i przyspieszyć czas jego wydania. Rzecz w tym, że błąd najprawdopodobniej wynika ze specyfiki języka i tego, że dość łatwo w nim pominąć określone czynności. To pokazuje jak łatwo współcześnie ufamy narzędziu, nie poświęcając należytej uwagi na weryfikacji tego narzędzia (i naszej wiedzy o nim).
Polecamy pełny artykuł na ten temat (link poniżej).
Odpowiedź na pytanie z zeszłego tygodnia
A pytaliśmy o to: czym jest i jak działa JDBC?
JDBC to akronim od Java DataBase Connectivity — czyli w skrócie sposób, w jaki Java może komunikować się z bazą danych. Sam standard określa jak to zwykle bywa z Javą głównie interfejsy — implementacje specyficzne dla baz danych (np. sposób budowania zapytań SQL) są dostarczane w postaci tzw. sterowników (ang. Driver).
Same sterowniki mogą być też różnego typu i działać w różny sposób — od korzystania z natywnego klienta i jedynie ‘opakowywania’ go w interfejsy Javy, poprzez komunikację pośrednią z użyciem serwera wymiany lub ODBC (jeden z wcześniejszych standardów na połączenie z bazą danych) po implementacje w 100% napisane w Javie.
Z uwagi na sposób budowy, często korzystając z bazy danych konieczne jest zaimportowanie stosownej biblioteki do projektu w zależności od rodzaju bazy danych, z której korzystamy.
Więcej informacji oraz szczegółowe opisy można znaleźć na stronie poświęconej standardowi JDBC.
Jaki będzie wynik wykonania fragmentu Math.min(Double.MIN_VALUE, 0.0d);?
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!
John Carmack
John Carmack z pewnością jest znany wszystkim zapalonym graczom — jeśli nie jesteś jednym z nich, z przyjemnością przybliżymy Ci jego sylwetkę.
John z zawodu jest programistą, obecnie pełni rolę CTO w firmie Oculus — twrcy bardzo głośnego zestawu VR Oculus Rift. Jego kariera zaczęła się jednak z grą Doom — rewolucyjną pod wieloma względami na ówczesne czasy. John był twórcą silnika graficznego do niej.
Ówczesne komputery nie były czymś, co nazwalibyśmy ‘potężnymi graficznie maszynami’ — głównym celem ówczesnych kart graficznych było wyświetlenie prostych okienek i obsługa konsoli. Generowanie w czasie rzeczywistym grafiki 3D, z cieniami i oświetleniem brzmiało jak fantastyka. A jednak dzięki kilku sprytnym trickom, sensownemu wykorzystaniu zasobów procesora i karty graficznej udało się stworzyć grę, która na ówczesne realia zachwycała grafiką, generacją świata i ‘realizmem’. To była najbardziej przełomowa produkcja, ale nie jedyna z sukcesami — nie trzeba spędzać lat z konsolą do gry żeby znać tytuły takie jak Wolfenstein 3‑D, Half-Life, Call of Duty czy Medal of Honor. John obecnie pracuje wraz z zespołem Oculus nad kolejnymi innowacjami, a my czekamy co będzie dalej ;)