REKLAMA

Programista 6/2015 (37) – Git i praca w modelu pull request – spis treści

Zapraszamy do zamówienia magazynu w prenumeracie. Miesięcznik jest dostępny w formie papierowej, PDF, EPUB i MOBI.

Wraz z prenumeratą możesz też otrzymać w prezencie trzy dowolne wydania archiwalne.  Wybierz swoje wydania archiwalne "Programisty": http://programistamag.pl/magazyny/

zamow

Okladki_37_1-sza37_300

Wydanie jest też dostępne w salonach Empik do 15 sierpnia.

BIBLIOTEKI I NARZĘDZIA

xText – języki dziedzinowe do zadań specjalnych >>pobierz fragment tego artykułu<<

DSL to skrót od angielskiego wyrażenia Domain Specific Languages, czyli w wolnym tłumaczeniu wyspecjalizowane/specjalizowane języki dziedzinowe. Realizując różnego typu projekty, często się okazuje, iż warto byłoby utworzyć niewielki program czy skrypt realizujący zadania związane ściśle z projektem, jednakże o składni innej niż typowe uniwersalne języki programowania (zwane też językami GPL – ang. General Purpose Languages). Budowa analizatora, a później interpretera czy nawet własnego edytora to niewątpliwie zadanie, które wymaga poświęcenia sporej ilości czasu.

Marek Sawerwain

PROGRAMOWANIE SYSTEMOWE

Metody synchronizacji i kontroli przerwań w kernelu NetBSD

Czemu służy synchronizacja w jądrze systemu operacyjnego? Realizuje ona mechanizmy zabezpieczające współdzielone zasoby przed uszkodzeniem na skutek niekontrolowanego dostępu. Synchronizacji nie można rozpatrywać w oderwaniu od architektury jądra i szerszego pojęcia mechanizmów sterowania, w tym szczególnie kontroli przerwań, które to dają pełniejszy obraz poprawnego wykorzystania interfejsów oferowanych przez jądro NetBSD.

Kamil Rytarowski

PROGRAMOWANIE APLIKACJI WEBOWYCH

Dodanie mechanizmu pojedynczego logowania (SSO) do istniejących aplikacji ASP.NET MVC

Obecnie pracuję nad projektem, który wymaga integracji istniejącej aplikacji ASP. NET MVC z pewną liczbą nowych systemów, zarówno back-office, jak i front-office. Oczekiwaniem klienta jest, aby wszystkie systemy działały razem tak, jak gdyby były jedną zintegrowaną aplikacją. W związku z tym kluczowym wymaganiem jest wprowadzenie mechanizmu pojedynczego logowania (SSO – Single Sign On). Dzięki niemu użytkownicy będą mieli możliwość nawigacji pomiędzy stronami tych aplikacji bez konieczności powtarzania żmudnej procedury uwierzytelnienia…

Jarosław Szczegielniak

ALGORYTMIKA

Symfonia kodu

Pewną ciekawą prawidłowością, którą kiedyś zauważyłem, jest fakt, iż programiści- pasjonaci wyjątkowo często przejawiają również uzdolnienia muzyczne. Wielu spośród moich znajomych po fachu gra na jakimś instrumencie, współtworzy zespół muzyczny lub – na przykład – zajmuje się restaurowaniem starych gitar. Na pierwszy rzut oka mogłoby się wydawać, że programowanie i muzyka to dziedziny bardzo odległe, a jednak okazuje się, że pięciolinią rządzą wyjątkowo ścisłe prawa i również w tym świecie programista może kreatywnie skorzystać ze swoich umiejętności. To nie będzie kolejny artykuł przekazujący suchą, teoretyczną wiedzę. Chcę opowiedzieć o pewnej przygodzie, której akcja rozegrała się zarówno wewnątrz środowiska programistycznego, jak i na pięciolinii.

Wojciech Sura

Więcej o tym artykule: >>tutaj<<

INŻYNIERIA OPROGRAMOWANIA

Problem okien dialogowych w architekturze MVVM

Na problem okien dialogowych w WPF natknie się prędzej czy później każdy programista próbujący pisać aplikacje zgodne ze wzorcem MVVM. My skupimy się na najczęstszej sytuacji, w której model widoku jest pasywny, zmiany jego stanu w całości zależą od akcji użytkownika. Istotą problemu jest to, że z punktu widzenia programisty często najwygodniejszym miejscem do wywoływania okien dialogowych (np. zadawania z ich użyciem pytań użytkownikowi lub powiadamianie go o zdarzeniach), a miejmy na uwadze, że okna dialogowe ewidentnie przynależą do warstwy widoku, są klasy modelu widoku, a czasem nawet klasy samego modelu. Ulegając pokusie, naruszamy ścisły podział na warstwy, będący jedną z głównych zalet wzorca MVVM.

Jacek Matulewski

Git – praca w modelu pull request

Metoda pull requests (PR) jest funkcjonalnością, która ułatwia współpracę programistom pracującym w serwisach internetowych pozwalających na przechowywanie projektów, wykorzystujących Git jako system kontroli wersji jak Bitbucket czy GitHub. Dostarczają one webowy interfejs przyjazny dla użytkownika w celu umożliwienia dyskusji na temat proponowanych zmian przed ich integracją do oficjalnego projektu.

Łukasz Mazur

Więcej o tym artykule: >>tutaj<<

TESTOWANIE I ZARZĄDZANIE JAKOŚCIĄ

Testowanie i analiza mutacyjna

Testowanie mutacyjne polega na wprowadzaniu do programu tzw. mutacji, czyli drobnych zmian w kodzie. Mutacje są definiowane za pomocą tzw. operatorów mutacyjnych, czyli zestawów reguł przekształcających składnię kodu źródłowego. Następnie zmodyfikowane programy, zwane mutantami, uruchamia się za pomocą posiadanych przypadków testowych i sprawdza, czy testy wykryły daną zmianę.

Adam Roman

PYTHON HAS POWER

Inne paradygmaty Pythona

Python to już z założenia język wieloparadygmatowy. Mimo że jest językiem obiektowym, to nie zrywa, tak jak Smalltalk albo Java, z programowaniem strukturalnym i pozwala na pisanie kodu niezawierającego jawnie deklarowanych klas. Z drugiej strony, sięga on po dużo bardziej specyficzny paradygmat funkcyjny. Nie jest to co prawda taka funkcyjność, jak w Haskellu albo chociaż Ocamlu, ale wystarczająca, aby dodać Pythonowi trochę egzotyki oraz znacznie rozszerzyć jego możliwości.

Radosław Ganczarek

BEZPIECZEŃSTWO

Uploady w aplikacjach webowych – najczęściej popełniane błędy

Upload plików zalicza się do najczęściej występujących funkcjonalności w webaplikacjach i zazwyczaj wiąże się z wgrywaniem na serwer obrazków bądź dokumentów. Jest zarazem miejscem, na które bardzo chętnie patrzą pentesterzy ze względu na liczne błędy bezpieczeństwa w implementacjach. W tym artykule przedstawimy najczęściej występujące błędy oraz pokażemy, w jaki sposób mogą zostać wykorzystane. Omówimy także sposoby obrony.

Michał Bentkowski

Więcej o tym artykule: >>tutaj<<

FELIETON

Projekt programistyczny

Czym z perspektywy programisty jest projekt? Kiedy należy uznać, iż zakończył się sukcesem? Czy wszystkie przedsięwzięcia polegające na stworzeniu programu powinny być uznane za projekty? Jaka jest różnica pomiędzy projektem a procesem? Na te pytania spróbujemy odpowiedzieć przy użyciu metody Five Why. Czy odpowiedź udzielana z perspektywy developera będzie inna, niż zwykle widzą to menadżerowie?

Grzegorz Kokot

PRAWO

Prawo do bycia zapomnianym w Internecie

Chyba można zaryzykować stwierdzenie, iż absolutnie każdy z nas codziennie korzysta z Internetu. Za jego pomocą pracujemy, załatwiamy sprawy biznesowe, szukamy potrzebnych nam informacji, szukamy pracy, kontaktujemy się ze znajomymi, a nawet robimy zakupy. Zakres możliwości, jakie daje nam sieć, jest naprawdę nieograniczony. Internet to również miejsce, w którym możemy znaleźć informacje o nas samych.

Kamil Stolarski, Łukasz Kania

STREFA CTF

CONFidence CTF 2015 – rsa2

W dniach 25-26 maja 2015 roku podczas konferencji CONFidence w Krakowie odbyły się zawody CTF zorganizowane przez polską drużynę Dragon Sector. W zawodach mogły wystartować maksymalnie czteroosobowe zespoły uformowane przez uczestników konferencji. Dostęp do około 20 zadań z różnych kategorii był możliwy jedynie przez lokalną sieć, a pod koniec pierwszego dnia zawodów zostało odblokowanych kilka zadań, które nie wymagały interakcji z infrastrukturą zawodów, co pozwalało uczestnikom na rozwiązywanie ich podczas nocnej przerwy. Wśród udostępnionych zadań znalazły się kryptograficzne problemy o nazwach rsa1 i rsa2, które różniły się zaledwie jedną linijką kodu, jednak sposób ich rozwiązania był zupełnie inny. My zajmiemy się tutaj trudniejszym wariantem, czyli rsa2.

Adam “adami” Iwaniuk

KLUB LIDERA IT

Jak rozmawiać z klientem, który nie wie, czego chce. Część 4

Wszystkie przedstawione do tej pory techniki rozmowy z klientem można nazwać mechaniką konwersacji. Skorzystanie z nich da jednoznaczny efekt. Lecz jeśli jednocześnie brak jest chemii w trakcie konwersacji, sama mechanika nie będzie działać. Po prostu rozmówca nie będzie miał ochoty współpracować.

Michał Bartyzel, Mariusz Sierczkiewicz

KLUB DOBREJ KSIĄŻKI

Jak stać się lepszym programistą. Przewodnik

Rafał Kocisz

Materiały do artykułów dostępne są w Panelu Prenumeratora lub w  Sekcji "Download": http://programistamag.pl/download/ > Multimedia.