Programista 12/2016 (55)
Programista 12/2016 (55)
Czy używając Visual Studio, nie zdarzało się nam narzekać na długą instalację i dość ograniczoną możliwość konfiguracji? Czy wydajność zawsze nas satysfakcjonowała? To przykłady problemów, które rozwiązuje najnowsza wersja pakietu. Dodatkowo wnosi szereg udogodnień zwiększających produktywność pracy programisty, a także nowe funkcjonalności zgodne z duchem czasu. Zapraszam do lektury!
Często staramy się używać już istniejących rozwiązań. Programowanie obiektowe wspiera to podejście w naturalny sposób przez dziedziczenie implementacji, co jednak nie zawsze jest nam na rękę, gdyż czasami chcielibyśmy tylko wykorzystać istniejące metody, bez całego balastu dziedziczenia. W tym artykule zaprezentuję przykładową implementację traitów w języku C# przy użyciu biblioteki Fody.
Ostatnie lata to dla języka C++ czas istotnych zmian. C++ 11, który światło dzienne ujrzał w 2011 roku, był istnym trzęsieniem ziemi. Trzy lata później wprowadzono kolejne usprawnienia w C++14, a w 2017 roku spodziewane jest uchwalenie kolejnej iteracji języka (C++17) zawierającej jeszcze więcej małych, acz przydatnych zmian.
Popularność języków funkcyjnych stale rośnie. Paradygmat programowania funkcyjnego jest z powodzeniem adoptowany w językach obiektowych. Jeżeli na co dzień piszemy w C#, korzystamy z rozszerzeń Linq. Tworzone potoki wywołań i przekazywanie do nich funkcji anonimowych to przykład programowania funkcyjnego. JavaScript filtruje i mapuje kolekcje, pozwala przekazywać funkcje jako argumenty do innych funkcji. To jest programowanie funkcyjne. Kod jest krótki, czytelny i mniej podatny na błędy.
Czy zastanawialiśmy się kiedyś, co czuje administrator, gdy po raz n-ty musi zainstalować system na serwerze i go skonfigurować? Pewnie wiemy i jeśli nie jesteśmy wyjątkowymi twardzielami, to zwykle manual w takiej sytuacji idzie na bok i zaczynamy konfigurować wszystko z pamięci – przecież tyle razy już to robiliśmy, że nie popełnimy błędu. W tym artykule postaram się przedstawić, jak ustrzec się przed tym problemem i uprzyjemnić sobie pracę.
Zbieranie i analiza danych fizjologicznych człowieka przez sprzęt elektroniczny
Dzięki obecnemu postępowi technologicznemu praktycznie wszędzie możemy spotkać komputery – począwszy od urządzeń kuchennych, po samochody, inteligentne domy oraz Internet of Things. Maszyna jest w stanie zastąpić człowieka w bardzo wielu czynnościach. Jednak wciąż daleko robotom do naśladowania człowieka, dlatego że żywy organizm jest jednostką nieprzewidywalną i nieopisywalną przez istniejące schematy. A czy dałoby się stworzyć urządzenie zdolne reagować na fizjologiczne sygnały żywego organizmu?
Tworzenie zyskujących coraz większą popularność mikroserwisów często stanowi nie lada gratkę dla programisty, natomiast konieczność implementacji uwierzytelniania w każdym z nich już nie tak bardzo. W tym artykule postaramy się pokazać, jak przekształcić to niezbyt porywające i powtarzające się zadanie w ciekawy projekt, tworząc scentralizowany mikroserwis służący do uwierzytelniania użytkowników – Single Sign-On.
Programiści i programistki .NET muszą dobrze poruszać się w temacie podstawowych bibliotek i składni języka C# (bądź innego przez siebie wybranego dostępnego na platformie .NET). To podstawa i nasz „chleb powszedni”. Z wiekiem, czy – jak kto woli – z doświadczeniem, przychodzi jednak często refleksja, że warto wiedzieć więcej. Jeśli ciekawią Was trochę wnętrza CLR (ang. Common Language Runtime), zapraszam do lektury. Uchylimy rąbka tajemnicy, jak .NET zarządza pamięcią.
Projektując nowe laboratorium na potrzeby badań i rozwoju (ang. Research & Development) technologii telekomunikacyjnych, należy wziąć pod uwagę bardzo wiele aspektów. Tylko dokładne zebranie wymagań i potrzeb umożliwi przygotowanie planu, a następnie zaprojektowanie wydajnego i wysoce dostępnego laboratorium. Pozwoli to na pracę nad najbardziej innowacyjnymi technologiami w branży i szybki rozwój biznesu, a o to nam przecież chodzi.
Wiele zespołów mierzy się z problemami architektonicznymi w swoich systemach. Co może być zaskakujące, wielokrotnie wcale nie o to chodzi, że nie wiadomo, jak go rozwiązać, tylko że pomysłów jest zbyt wiele lub wydają się zbyt pracochłonne, aby udało się je przeprowadzić. Tego typu problemy czekają nierozwiązane przez wiele miesięcy, bo zespół nie może się dogadać. A3 thinking to bardzo przydatna metoda, która krok po kroku prowadzi do rozwiązania, które jest dużo prostsze niż na początku się wydawało.
CSAW to jedne z największych zawodów CTF odbywających się online, organizowane w ramach konferencji Computer Security Awareness Week na Uniwersytecie Nowojorskim. W tym roku udział wzięły 1274 ekipy, zwyciężyła amerykańska drużyna PPP, a my zakończyliśmy zmagania na pozycji 7., będąc tym samym najwyżej sklasyfikowanym polskim zespołem. Postanowiliśmy podzielić się z czytelnikami rozwiązaniami dwóch interesujących zadań z dziedziny kryptografii asymetrycznej. Są one o tyle ciekawe, że sam algorytm został bezbłędnie zaimplementowany, a wektor ataku stanowiły symulowane błędy sprzętowe, możliwe do wywołania także w realnej sytuacji.
W poprzednim numerze napisałem, dlaczego moim zdaniem znajomość języka angielskiego to dla programisty sprawa fundamentalna. Wspomniałem też o kursie języka angielskiego dla programistów. W tym numerze natomiast przedstawiam podstawowe założenia, jakie moim zdaniem powinien spełniać dobry kurs.