Programista 12/2017 (67)
Programista 12/2017 (67)
Premiera Javy w wersji 9 już za nami, tymczasem programiści Androida wciąż zmuszeni są do korzystania z wersji 7. Przez pewien czas Google próbowało wprowadzić możliwość pisania aplikacji w Javie 8 przy użyciu Jacka, ale w końcu wycofali się z tego pomysłu i narzędzie to przestało być wspierane. W odpowiedzi na zapotrzebowanie na nowoczesny język programowania Android Studio w wersji 3 wprowadza pełne wsparcie dla języka Kotlin, opracowanego przez ekipę z JetBrains. Aby jednak programiści, którzy chcą pozostać przy Javie, nie czuli się zostawieni samym sobie, wprowadzono również częściowe wsparcie dla mechanizmów językowych obecnych w Javie 8.
Apple TV to cyfrowy odtwarzacz multimedialny, który umożliwia oglądanie treści multimedialnych w technologii 4K HDR. Apple TV jest kontrolowany przed dedykowany system operacyjny tvOS, udostępniający interfejs programistyczny, który pozwala programistom tworzyć aplikację na tę platformę. W tym artykule opiszę, w jaki sposób można implementować takie aplikacje za pomocą Visual Studio for Mac i narzędzi Xamarin.
Obsługa przerwań jest jedną z kluczowych operacji, z jaką musi poradzić sobie system operacyjny. Implementacja przerwań w Linuksie jest zależna od architektury całego systemu, a w szczególności od procesora, kontrolera/kontrolerów przerwań i sposobu ich połączenia. Niniejszy artykuł podzielony jest na dwie części. W pierwszej krótko opisano popularnie stosowany w systemach ARMowych kontroler przerwań GIC. Druga natomiast traktuje o obsłudze przerwań w Linuksie, przybliżając takie zagadnienia jak: domeny przerwań, połączenia kaskadowe, rozdzielenie obsługi przerwania na części (tzw. top, bottom halves), a także trasowanie przerwań. W artykule przybliżono zarówno mechanizmy generyczne, jak i zależne od architektury – skupiono się głównie na SoCach ARM/ARM64 oraz kontrolerach przerwań typu GIC.
Czy aplikacja webowa może działać offline, zachowując swoją funkcjonalność? Czy może z powodzeniem zastąpić natywną aplikacje mobilną? Jeszcze wczoraj odpowiedzielibyśmy dwa razy „nie”, ale dziś mamy zupełnie inne możliwości. W tym artykule pokażę, jak przy użyciu najnowszych przeglądarek internetowych oraz odrobiny JavaScriptu tchnąć życie w aplikacje webowe nawet po ich odłączeniu od sieci.
Fraktale były znane człowiekowi jeszcze w czasach, zanim opisali je matematycy. Wielu artystów wykorzystywało w swoich pracach elementy, które składały się z mniejszych identycznych składników. W otaczającej nas przyrodzie istnieje sporo naturalnych fraktali. Takimi przykładami są rośliny, np. paproć, drzewa, brokuł – który składa się z coraz mniejszych odpowiedników dużego kwiatu. Podobnie wyglądają liście paproci. Celem napisania artykułu jest wyjaśnienie czytelnikowi matematycznych podstaw konstruowania fraktali w przystępny sposób oraz wyjaśnienie sensu badań nad nimi. W artykule zaprezentowano także przykład kodu, który można wykorzystać w celu tworzenia fraktali w liczbach zespolonych. Zakładamy, że czytelnik zna podstawowe pojęcia analizy matematycznej.
Dobre praktyki DDD zalecają separację modelu dziedzinowego od modelu danych. Długi czas programiści .NET korzystający z Entity Framework mieli z tym problem, gdyż nie istniał łatwy sposób na pozbycie się publicznych getterów/setterów czy kluczy głównych/obcych z encji w modelu dziedziny. W artykule zilustrowano, w jaki sposób możemy wykorzystać Entity Framework Core 2 do implementacji modeli domenowych w jak największym stopniu niezależnych od bazy danych czy biblioteki ORM.
Jak ich unikać i co zrobić, gdy już wystąpią
W pracy testera automatyzującego niezwykle ważna jest jakość tworzonego przez niego kodu, tak żeby był on stabilny, działał poprawnie, weryfikował działanie testowanego systemu, a co najważniejsze – dawał pewność wszystkim członkom projektu, że jest w stanie pokazywać faktyczny stan jakości testowanej aplikacji. Nierzadko dzieje się tak, że testy regresyjne działają w sposób losowy albo nasza regresja jest ciągle czerwona i zieleni się dopiero tuż przed wydaniem aplikacji. W niniejszym artykule chciałbym pochylić się nad przyczynami takiego stanu i zaproponować pewne metody jego unikania oraz naprawiania, jeśli taka sytuacja już zaistnieje.
Umieszczanie złośliwego kodu w nieszkodliwych procesach jest szeroko wykorzystywaną funkcjonalnością złośliwego oprogramowania w celu obchodzenia systemów AV/HIPS. Pierwsze techniki tego typu pojawiły się ponad 15 lat temu i „z marszu” zdobyły uznanie wśród osób skupionych wokół tematyki tworzenia malware’u. Przez ostatnie dwa lata pojawiły się dwie nowe techniki, wykorzystujące zapomniane mechanizmy Windows, które pozwalają na uruchomienie kodu tylko z pamięci operacyjnej. Umieszczenie pliku wykonywalnego w systemie plików ofiary nie jest wymagane – jest to tzw. „fileless malware”1. Nietrudno się domyślić, że wszystkie mechanizmy heurystyczne silników antywirusowych nie miały żadnych szans w starciu z nimi. W tym artykule omówię najpopularniejsze oraz najnowsze mechanizmy służące do ukrywania kodu pośród nieszkodliwych procesów wraz z przykładowymi implementacjami.
Czytelnicy magazynu „Programista”, szczególnie ci trochę starsi, mogą pamiętać jeszcze perełkę polskiej kinematografii w postaci filmu „Haker” z roku 2002. Sam film nie odniósł co prawda wielkiego sukcesu, a średnia ocen 5.3/10 w serwisie filmweb.pl raczej nie zachęca do jego oglądania, niemniej zapisał się on na kartach historii słynną sceną, podczas której dwóch hakerów omawia potencjalne metody ataku na mocno zabezpieczony serwer. Jedna z postaci sugeruje wtedy przeprowadzenie ataku „emacsem przez sendmail”, którego szczegóły po dziś dzień nie są niestety znane. Nie jesteśmy, co prawda, w stanie rozwikłać tej tajemnicy, ale w poniższym artykule przedstawimy zbliżony tematycznie atak „wgetem przez postfixa” jako rozwiązanie dla zadania SqlSRF z tegorocznych kwalifikacji do japońskich zawodów SECCON.