Programista 2/2016 (45)
Programista 2/2016 (45)
Dzisiejszy świat informatyczny rozwija się w zawrotnym tempie. Nowe technologie generują coraz więcej miejsc pracy, na które brak odpowiednio wykwalifikowanej kadry. Co to oznacza dla Ciebie? Oczywiście większy luz i pewność zatrudnienia. Ale czy rzeczywiście Twoje poszukiwanie pracy IT wiele się różni od poszukiwania pracy w innych zawodach? Czy tradycyjne ogłoszenia o pracę w branży IT są inne niż pozostałe? Hmmm…
C++ nie jest jedynie C z klasami. Niestety, to, co kiedyś było siłą C++, czyli kompatybilność z językiem C, obecnie stanowi o jego słabości. Artykuł nie omawia standardowych kontenerów, zasad programowania obiektowego, używania klas i polimorfizmu. Skupia się natomiast na elementach, które najtrudniej wyeliminować oraz przyswoić inżynierom korzystającym z nowoczesnego C z klasami.
Dobrze znane i szeroko stosowane energooszczędne procesory ARM zaczynają wychodzić poza ramy zastosowań, których byliśmy świadkami. Dotychczas dominowały w urządzeniach mobilnych, przemysłowych oraz wysoce specjalizowanych i zintegrowanych układach, gdzie niski pobór prądu pozwolił osiągnąć spółce z Cambridge wielki sukces. To właśnie łatka eko-architektury sprawia, że ARM zaczyna być poważnym graczem także na rynku serwerów, które obecnie wykorzystywane są na szeroką skalę w centrach obliczeniowych. Jednostkowy zysk energetyczny przekłada się na niemałe oszczędności w makro skali serwerowej farmy. Wiele firm, mających długoletnie doświadczenie w projektowaniu ARMowych systemów, próbuje ugryźć kawałek tortu, który do tej pory należał do firmy Intel, procesorowego giganta i monopolisty rynku serwerowego.
Microsoft Dynamics CRM jest systemem służącym do zarządzania relacjami z klientami (Customer Relationship Management), stworzonym przez naszą ulubioną firmę z Redmond. W artykule tym postaram się przybliżyć czytelnikom ideę tworzenia oprogramowania w oparciu o ww. platformę, a także zaprezentować przykładową aplikację .NET, integrującą się z nią za pomocą udostępnionych interfejsów.
Część 2: SWIM
Co wspólnego mają ze sobą gry MMO (ang. massive multi-player online), sieci wymiany plików BitTorrent, rozproszone bazy danych oraz aplikacje typu SaaS (ang. Software As A Service) działające w chmurze, takie jak np. dokumenty online? Ciężko odpowiedzieć na takie pytanie bez porównania konkretnych produktów, jednak niezależnie od ich implementacji muszą one sobie radzić m.in. z wielką liczbą węzłów/użytkowników łączących się za pomocą sieci Internet, losowo się dołączających, jak i odłączających od rozgrywek, czatów, zasobów itp. Innymi słowy, systemy te zarządzać muszą listą „uczestników” grupy, informując przy tym każdego jej członka o pojawieniu się, odejściu oraz ewentualnej awarii innych węzłów.
RabbitMQ jest czymś w rodzaju firmy pocztowej, która jest organizacją złożoną nie tylko z placówek pocztowych, ale i całej infrastruktury służącej do przekazywania wiadomości z jednego miejsca na drugie, od nadawcy do odbiorcy. W RabbitMQ nadawca zwany jest producentem (ang. producer), odbiorca konsumentem (ang. consumer), a wspomniana firma pocztowa to w dużym uproszczeniu kolejka wiadomości (ang. message queue). Wiadomości są przesyłane w środowisku rozproszonym, co oznacza, że „nasza firma pocztowa” będzie odpowiedzialna za dostarczanie pakietów danych pomiędzy różnymi aplikacjami, często złożonymi systemami.
CQRS – Command Query Responsibility Segregation – to bardzo popularny temat wśród programistów od ładnych kilku lat. Wokół niego urosło tyle dodatkowych pojęć i zależności, że aktualnie ciężko jest zacząć zgłębiać to zagadnienie. W artykule przedstawię, czym naprawdę jest CQRS i jak to „ugryźć”. Przykłady kodu napisane są w C#, jednak powinny być zrozumiałe dla programistów każdego języka.
Popularność i dojrzałość rozwiązań chmurowych sprawia, że obecnie coraz więcej nowo powstających platform i serwisów korzysta z gotowych rozwiązań, oferowanych przez dostawców usług na poziomie IaaS/PaaS/SaaS. Czy jednak wykorzystanie usług chmurowych zawsze oznacza wysoką wydajność i niezawodność? Czym się kierować przy wyborze odpowiedniego dostawcy? Czy istnieje sposób na obniżenie kosztów utrzymania wirtualnej infrastruktury? Jak świadomie podjąć decyzję dotyczącą strategii rozwoju działu IT w obszarze outsourcingu usług w chmurze?
Kiedy stajemy przed koniecznością napisania wielozadaniowego programu, pierwsza myśl to wątki, a druga to typowe dla programów wielowątkowych problemy. Jeśli zadania spędzają większość czasu w oczekiwaniu na operacje wejścia-wyjścia, to możemy znacznie uprościć skrypt, korzystając właśnie z paczki asyncio. Od wersji 3.4 Python posiada ją w swojej bibliotece standardowej.
Amerykański programista, Jamie Zawinski, napisał kiedyś słynne słowa o wyrażeniach regularnych: „Niektórzy ludzie, gdy napotykają na problem, myślą sobie: »Wiem! Użyję wyrażeń regularnych«. I teraz mają dwa problemy”. W tym artykule przekonamy się, jak prawdziwe są to słowa, jeżeli wyrażenie regularne zostało napisane w sposób niewłaściwy, umożliwiając tym samym przeprowadzenie ataku Denial-of-Service na aplikację.
Ocena zgodności (ang. compliance) powinna zawsze poprzedzać wprowadzenie rozwiązania informatycznego na rynek. Najlepiej, by była wykonywana na etapie projektowania czy jeszcze w fazie koncepcyjnej. Wtedy ewentualne zmiany są najbardziej optymalne do wprowadzenia. Wiążą się z najmniejszymi kosztami.
Okazuje się, że czytelnikom magazynu „Programista” leżą na sercu kwestie związane z terminologią programistyczną, czego dowodem są maile, które od czasu do czasu otrzymuję. Poniżej przedstawiam kolejny (podaję nazwisko za zgodą autora) i mój komentarz do niego.
32C3 CTF to coroczne zawody organizowane podczas jednej z największych na świecie konferencji dotyczących bezpieczeństwa, na którą w zeszłym roku przyjechało aż 13 tysięcy uczestników. Zawody te cieszą się dużą popularnością z uwagi na ciekawe (a zarazem naprawdę trudne) zadania, świetną organizację oraz termin – są to ostatnie zawody w roku, więc ich wynik może zadecydować o finalnej pozycji drużyny w rankingu CTFtime.org na dany rok.