Programista 4/2020 (91)
Programista 4/2020 (91)
Czyli jak poradzić sobie z podatnościami w obrazach
Od zaprezentowania światu Dockera minęło już kilka lat. W ciągu tego czasu stał się narzędziem, bez którego wiele osób nie wyobraża sobie codziennej pracy. Z drugiej strony – osobom, które dopiero zaczynają swoją przygodę z konteneryzacją, może wydawać się, że Docker jest rozwiązaniem wszystkich ich dotychczasowych problemów – w tym również bezpieczeństwa aplikacji. Czy zatem aplikacja uruchomiona w kontenerze dockerowym jest bezpieczna?
Wsteczna kompatybilność jest kluczową cechą języka C++. Programistom cecha ta z reguły kojarzy się negatywnie, ale należy pamiętać, że to ona przyczyniła się do tak wysokiej popularności języka. W tym artykule przyjrzymy się szczególnemu rodzajowi wstecznej kompatybilności – kompatybilności na poziomie ABI – oraz zobaczymy, jak wpływa ona na konstrukcję języka oraz biblioteki standardowej.
Czy maszyna może odczuwać emocje? Wielu z nas odrzuca taką możliwość, uznając, że pozbawione duszy roboty nigdy nie będą w stanie poznać radości, strachu czy smutku. Taką wizję wkładamy między bajki, dopuszczając podobny scenariusz tylko w filmach i animacjach w rodzaju „Wall-E” czy „Krótkiego spięcia”. Tymczasem świadome i empatyczne roboty są już wokół nas i stanowią jeden z najważniejszych trendów technologicznych 2020 roku.
Wraz z rozwojem IT coraz więcej danych jest wymienianych pomiędzy aplikacjami, a dodatkowo coraz większa część tych danych jest przesyłana bez udziału użytkowników. Urządzenia komunikują się między sobą wtedy, kiedy same zdiagnozują taką potrzebę – nie czekając na interakcję z użytkownikiem. Taki sposób korzystania z infrastruktury komputerowej rzuca nowe wyzwania twórcom oprogramowania. Po pierwsze, ilość danych w skali świata jest coraz większa, a po drugie – koszt związany z ich przetwarzaniem powinien być jak najmniejszy.
Sieć Ethernet stanowi obecnie jeden z najbardziej popularnych sposobów przesyłania danych. W tym artykule przyjrzymy się połączeniu pomiędzy warstwą fizyczną a warstwą łącza danych, wykorzystując do eksperymentów układ FPGA. Najpierw za pomocą wbudowanego w środowisko programistyczne analizatora stanów logicznych zaobserwujemy przebiegi na magistrali RMII, a następnie, korzystając z wcześniejszych obserwacji, zaimplementujemy własną obsługę połączenia z prędkością 100 Mb/s.
Podróż po algorytmach tekstowych, którą odbyliśmy w poprzedniej części serii, była dla mnie naprawdę fascynująca. Kto by pomyślał, że takie proste – wydawałoby się – zagadnienie, jakim jest przetwarzanie tekstu, może być takie ciekawe? Ostatnio zainteresowałem się więc kolejnym algorytmem, który dziś weźmiemy na warsztat, a jest nim poszukiwanie najdłuższego wspólnego podciągu albo, mówiąc prościej, wyznaczanie różnic edycyjnych pomiędzy dwoma ciągami.
Testy binarne są istotnym obszarem analizy danych. Istnieje wiele sposobów opisu jakości takich testów. Celem tego artykułu jest przedstawienie najważniejszych z nich, czyli macierzy pomyłek, krzywych ROC, PR i krzywych kosztu.
W swojej kilkudziesięcioletniej historii testowanie oprogramowania mocno ewoluowało. Na przestrzeni lat zmieniały się nie tylko definicje czy podejście, ale przede wszystkim postrzeganie i rola testowania w procesie wytwarzania oprogramowania. Dziś nie wypada wątpić ani w zasadność, ani zalety testowania, a firmy coraz śmielej traktują testerów jako pełnoprawnych członków zespołów projektowych.
Machine Learning (uczenie maszynowe) to dzisiaj bardzo modny temat. Zarówno korporacje, jak i mniejsze firmy prowadzą coraz więcej projektów badawczych z wykorzystaniem uczenia maszynowego. Menedżerowie, tech leadowie i inni liderzy cieszą się, że są angażowani do tego typu przedsięwzięć. Czyhają jednak na nich trudne do przewidzenia pułapki. Pułapki unikalne, nieznane z innych projektów. W tym artykule dowiesz się o jednej z nich i poznasz pewien scenariusz, który mógłby wydarzyć się naprawdę.
Wprowadzenie mikroprocesorów na rynek komercyjny na początku lat 70-tych XX wieku zaowocowało powstaniem najrozmaitszych systemów komputerowych, oferowanych przez wielkie firmy, jak i „garażowych”, niszowych hobbystów. Szczególnie konstrukcje 8-bitowe, jako stosunkowo proste i tanie, wyzwoliły twórczy potencjał konstruktorów. Rozgrzały także rywalizację o rynek wśród producentów mikroprocesorów.