Jeśli chcemy szybko odpowiedzieć na pytanie, czym jest Julia, to warto przytoczyć pierwsze zdania ze strony domowej projektu. A jest tam mowa o tym, iż Julia to pakiet darmowy oraz o otwartym kodzie, którego przeznaczeniem są obliczenia inżynierskie. To jednak nie wszystko, bowiem Julia oferuje bardzo dużą wydajność porównywalną z kodem produkowanym przez kompilatory języków C czy C++, ale oferowany język posiada syntaktykę podobną do języka pakietu Matlab czy Octave. Szczególnie ta ostatnia zaleta spowodowała duże zainteresowanie środowiskiem Julia, co przekłada się na sprawny rozwój całego systemu, a w efekcie otrzymaliśmy kolejny bardzo wartościowy pakiet do przeprowadzania obliczeń. Pod względem wydajności Julia może konkurować z językami kompilowanymi, co powoduje, iż warto bliżej poznać jej możliwości.
Programowanie aplikacji wieloplatformowych stanowi spore wyzwanie, w szczególności dla twórców aplikacji mobilnych. Wynika to głównie z różnorodności środowisk, języków oraz paradygmatów programowania dla poszczególnych platform. Aby rozwiązać te problemy, na przestrzeni kilku ostatnich lat powstało parę środowisk i koncepcji, których celem jest ujednolicenie tworzenia wieloplatformowych aplikacji. W tej mini-serii artykułów opiszę wybrane narzędzia wspierające programowanie tego typu aplikacji. W pierwszej kolejności omówię możliwości języka C++ w środowiskach Embarcadero RAD Studio oraz Qt Creator.
Programista często staje przed koniecznością zapamiętania wartości rejestrów procesora, wykonania sekwencji operacji, a następnie odtworzenia poprzednich wartości w rejestrach procesora. W takich przypadkach przychodzi z pomocą stos, który jest kolejką typu LIFO (ang. Last-In, First-Out), na którym dane są odkładane na wierzchu i z wierzchołka są pobierane. Akcje odkładania danych na stos są wykonywane w odwrotnej kolejności niż akcje pobierania danych i chociaż ta operacja wydaje się trywialna, to jednak w oparciu o nią skonstruowano zaawansowane mechanizmy funkcjonowania systemów operacyjnych.
Symulacja układu fizycznego składającego się ze zbioru punktów materialnych jest stosunkowo łatwa do samodzielnego przygotowania (patrz artykuły w numerach 7/2013 i 2/2015). Znacznie trudniejsze jest symulowanie bryły sztywnej, czyli układów, które nie ulegają odkształceniom. Nie dlatego, że równania ruchu są mniej oczywiste, choć to też, ale przede wszystkim ze względu na znacznie bardziej złożoną detekcję kolizji w trójwymiarowej przestrzeni i konieczność zaimplementowania prawidłowej reakcji na zderzenia. W tym kontekście nieocenione są gotowe silniki fizyczne, w których NVIDIA PhysX wydaje się obecnie jednym z najbardziej interesujących. Szybko rośnie liczba gier, w których ten silnik jest wykorzystywany.
React.js to javascriptowa biblioteka pozwalająca na pisanie elementów interfejsu użytkownika, która okaże się nie mniej przydatna również w budowie bardziej złożonych UI. Może zostać zintegrowana z dowolnym innym narzędziem (jak choćby jQuery), wchodząc w skład praktycznie dowolnego stacku technologii JS-owych. Z tego powodu bardzo często programiści wybierają Reacta jako rozwiązanie pełniące rolę widoku (view) w aplikacjach opartych na architekturze MVC.
W życiu każdego programisty lub programistki pojawia się prędzej czy później smutny dzień, gdy dostaje od przełożonego propozycję nie do odrzucenia: zrób prezentację. Bez względu na to, czy jest to prezentacja funkcjonalności, nad którą pracujemy, szkolenie wewnętrzne z tematu, w jakim się specjalizujemy, lansowanie w społeczności firmy, w której pracujemy, nawracanie niewiernych na nasz ulubiony ezoteryczny język czy framework, to twoje ciało i umysł chętnie wybawią Cię z tej opresji, załatwiając piękną reakcję psychosomatyczną typu syndrom jelita drażliwego, drgawki czy przejście w tryb prokastynacji.
W trzecim kwartale zeszłego roku zgłosiłem do Mozilli błąd bezpieczeństwa, który pozwalał na ominięcie Same Origin Policy (SOP) w przeglądarce Firefox. Dzięki temu możliwe było przeprowadzanie ataków polegających na wykradaniu danych należących do innych domen. Źródłem problemu był pewien pozornie mało istotny detal przy parsowaniu adresów IP.
W numerze 1/2016 „Programisty” ukazał się artykuł trafnie opisujący celowość przeglądu kodu. Jest on jednym z podstawowych elementów wielu metodologii programistycznych. W niniejszym tekście chciałbym spojrzeć na temat z trochę innej perspektywy. W jakim środowisku przegląd jest zwykle przeprowadzany? Czy lubimy dzielić się owocami swojej pracy, przyjmować krytykę i otwierać się na dyskusję? Rzeczywistość pokazuje zazwyczaj, że nie: jak najdłużej opóźniamy dyskusję nad swoją implementacją, przywiązujemy się do własnych rozwiązań i bronimy nie zawsze otwarci na argumenty z zewnątrz. Wkraczają emocje i rozmowa na tematy techniczne staje miejscem personalnych uwag, niezdrowej rywalizacji. Skąd bierze się takie nastawienie i czy da z nim walczyć?
Rodzina terminów zawierających różne odmiany słowa hash nie doczekała się chyba jeszcze ogólnie akceptowanych i stosowanych przez wszystkich polskich ekwiwalentów. Zobaczymy, z jakich rozwiązań można skorzystać, i spróbujmy znaleźć satysfakcjonujący odpowiednik.
Coraz więcej zagranicznych firm zaczyna interesować się podjęciem współpracy z polskimi programistami. O czym należy pamiętać przy fakturowaniu takiego kontrahenta i jak poradzić sobie z czyhającymi w wielu miejscach pułapkami?
Zmorą niemal każdego projektu są spotkania. Gdy zostaniesz liderem, będziesz prowadził wiele spotkań. Zabierają one mnóstwo czasu wielu osób i często kończą się brakiem konkretnych ustaleń. To sprawia, że większość z nas nie lubi brać udziału w takich zdarzeniach. Bardzo często zebrania kończą się fiaskiem, ponieważ nie są dobrze przygotowane. W tym artykule omówię bliżej, co można zrobić, żeby były bardziej efektywne.
Nieprzerwanie od 2013 roku organizowany jest podzielony na 2 części ASIS CTF. Zaczyna się kwalifikacjami, w których to znalazło się opisywane tu zadanie, a kończy finałem. Autorami CTF są gracze irańskiej ekipy ASIS, która utrzymuje się w obecnym roku wśród najlepszych 20 drużyn sceny CTF. W najnowszej odsłonie zawodów zadania stały na wysokim poziomie, a te z kategorii Web były na tyle ciekawe, że rozwiązanie jednego z nich opisujemy w niniejszej części „Zdobyć flagę…”.