Magazyn można zamówić w prenumeracie przez formularz na stronie: http://www.programistamag.pl/infosite/register
Spis treści:
BIBLIOTEKI I NARZĘDZIA
Koncepcja modelu Git-flow z wykorzystaniem w SourceTree
Usprawnienie procesu wytwarzania oprogramowania
W artykule przedstawiony zostanie model rozwojowy Git-flow, jaki wprowadzono do wielu projektów IT, zarówno komercyjnych, jak i open source. Okazał się on być bardzo udanym oraz skutecznym dla niepewnych procesów release'u. Głównie uwaga będzie poświęcona strategii rozgałęzienia i zarządzania release'ami. Model skupia się wokół systemu Git jako narzędziu do wersjonowania kodu.
Łukasz Mazur
JĘZYKI PROGRAMOWANIA
Lazarus - nie zapominajmy o Pascalu
Popularność języków Javy czy C/C++ nie podlega oczywiście dziś dyskusji, jednakże stary dobry Pascal nadal ma się całkiem dobrze. Do jego popularności w ostatnim czasie przyczynia się firma Embarcadero, która systematycznie wydaje kolejneedycje popularnego środowiska Delphi (a także C++Builder). Najnowsza odsłona to Delphi XE4. Jednak od dłuższego czasu istnieje projekt Free Pascal (FP), czyli kompilator open - source języka Pascal, zgodny z językiem Pascal i jego dialektem oferowanym przez Delphi.
Marek Sawerwain
PROGRAMOWANIE SYSTEMOWE
Zabawy z dynamicznym linkerem w Linuksie
Szperanie w kodzie binarnym aplikacji od zawsze pobudzało wyobraźnię programistów. Zapewne każdy z nas na jakimś etapie zainteresowania komputerami próbował swoich sił w tej dyscyplinie - czy chodziło o poprawienie błędu w programie bez dostępu do kodu źródłowego, czy o uzyskanie nieśmiertelności w grze. Tym razem spróbujemy zmodyfikować program skompilowany w systemie Linux bez używania debuggera i bez konieczności mozolnego grzebania w kodzie maszynowym.
Krzysztof Kliś
PROGRAMOWANIE APLIKACJI WEBOWYCH
Uczymy się ASP.NET MVC 4
Formatowanie adresów URL
Zadajmy sobie pytanie. Jaki jest pierwszy element naszej strony, który decyduje o jej postrzeganiu? Odruchowo chciałoby się powiedzieć: „jest to oczywiście strona główna”. Nic jednak bardziej mylnego. Tak naprawdę pierwszym elementem, na który zwracamy uwagę, jest adres, pod jakim znajduje się ta strona. Właśnie tym tematem zajmiemy się w niniejszym artykule. Dowiemy się, w jaki sposób formatować adresy wewnątrz naszej strony tak, aby były one przyjazne dla osób odwiedzających ją oraz spełniały wszystkie wymogi funkcjonalne w naszej aplikacji debuggera i bez konieczności mozolnego grzebania w kodzie maszynowym.
Karol Rogowski
PROGRAMOWANIE GIER
Mechanizmy zarządzania stanem przy programowaniu gier (część 2)
W pierwszej części tego artykułu (opublikowanego w ósmym numerze Programisty) przedstawiłem kilka podstawowych wariantów implementacji maszyny stanów: mechanizmu wykorzystywanego najczęściej do zarządzania stanem w grach. W niniejszym tekście zaprezentuję implementację maszyny stanów ze stosem i pokażę, jak za jej pomocą można zbudować prosty, a jednocześnie wysoce elastyczny i reużywalny mechanizm zarządzania stanem gry. Zapraszam do lektury!
Rafał Kocisz
PROGRAMOWANIE BAZ DANYCH
Wprowadzenie do projektowania hurtowni danych
Część 2 - Fakty
W poprzedniej części rozważań na temat projektowania hurtowni danych poznaliśmy ich wielowymiarowy model. Przypomnę: w modelu tym zakładamy, że baza danych zawiera fakty opisane przez wymiary i określające wartości miar. Fakt to nic innego, jak pojedyncze wydarzenie podlegające analizie (np. fakt wynajęcia samochoduczy sprzedaż biletu loteryjnego). W poprzednim numerze skoncentrowaliśmy sie na wymiarach, teraz nadszedł czas na fakty. Czym jest tablica faktów? To podstawowe miejsce przechowywania analizowanych danych. Znajdziemy w niej informacje o obiektach i związanych z nimi wydarzeniach.
Agnieszka Chodkowska-Gyurics
Wstęp do nierelacyjnych baz danych na przykładzie MongoDB
W świecie baz danych bez wątpienia prym wiodą znane od kilku dekad relacyjne bazy (RDBMS), takie jak MySQL, PostgreSQL czy Oracle. W tym artykule chciałbym podzielić się wiedzą o stosunkowo młodych, ostatnio będących na topie bazach nierelacyjnych (NoSQL).
Jędrzej Czarnecki
PRZETWARZANIE RÓWNOLEGŁE I ROZPROSZONE
Wątki zarządzane w aplikacjach Windows Forms a interfejs użytkownika
Poniższy artykuł jest pierwszym z serii trzech, w których chcemy w kompletny sposób przedstawić zagadnienia związane z odświeżaniem i utrzymywaniem aktywnego (nieblokującego) interfejsu użytkownika w aplikacjach korzystających z wątków roboczych (włączając w to zadania biblioteki TPL i metody asynchroniczne z WinRT). W pierwszej części przedstawimy zagadnienia dotyczące biblioteki kontrolek Windows Forms, które stanowią stosunkowo dobrze znaną i ugruntowaną technologię tworzenia aplikacji dla Windows. W drugiej części zajmiemy się problemem interfejsu w aplikacjach wielowątkowych opartych o komponenty z biblioteki WPF. Wreszcie, w trzeciej omówimy rozwiązanie oparte na kontekście synchronizacji, którego zaletą jest unifikacja mechanizmów synchronizacji interfejsu użytkownika z wątkami w różnych technologiach programowania aplikacji dla Windows. Jak pokażemy, kontekst synchronizacji dostarcza jeden spójny mechanizm umożliwiający kontrolę wizualnych kontrolek spoza wątku interfejsu użytkownika.
Dawid Borycki
ALGORYTMIKA
Liczba "Pi" algorytm BBP i typ BigInteger w C#
Z tego artykułu prawdopodobnie czytelnik nie dowie się niczego, co mogłoby mu pomóc w pracy. Pisząc go, myślałem raczej o chwili rozrywki, o podsunięciu tematu do rozmowy przy automacie do kawy. Nie będzie to jednak rozrywka bezmyślna. Co więcej, z góry uprzedzam, że w tym artykule pojawią się wzory, które w pierwszej chwili mogą wydawać się dość trudne, ale tak naprawdę to tylko długie sumowania.
Jacek Matulewski
INŻYNIERIA OPROGRAMOWANIA
Techniki utrudniające inżynierię wsteczną złośliwego oprogramowania (temat z okładki)
Inżynierią wsteczną (ang. reverse engineering) określa się techniki wykorzystywane do analizy skompilowanego oprogramowania, bez dostępu do jego kodów źródłowych. W tym artykule chciałbym przedstawić metody, jakie wykorzystywane są przez twórców złośliwego oprogramowania do utrudnienia analizy wirusów komputerowych i złośliwego oprogramowania (tzw. malware), a także sposoby, jak sobie z tym radzą firmy antywirusowe i same antywirusy.
Bartosz Wójcik
Jak tworzyć testowalny kod?
Cross-cutting concerns - AOP
Jak wydzielić i reużyć powtarzający się w całej aplikacji kod? Jak zastosować zasadę Single Responsibility Principle w praktyce? Co to są cross cutting concerns? Kiedy zastosować przybliżenie programowania aspektowego, jakim jest programowanie funkcyjne?
Michał Mac
LABORATORIUM BOTTEGA
Receptury projektowe - niezbędnik początkującego architekta
Część III: Zarządzenie złożonością przez trójpodział logiki - Open/closed principle w praktyce
W modelu złożonego problemu zwykle możemy wydzielić strukturę wyższego rzędu charakteryzującą się różną podatnością kodu źródłowego na zmiany. W niniejszym artykule zostanie przedstawiony meta-model, którym możemy posiłkować się w zmaganiach ze złożoną logiką biznesową. Meta-model będzie praktyczną realizacją drugiej zasady SOLID: Open/closed principle, która pozwala tworzyć rozwiązania otwarte na rozbudowę (rozbudowa to nie to samo co zmiana).
Sławomir Sobótka
LABORATORIUM MACOPEDIA
TYPO3 Extbase - Stwórz własne rozszerzenie do TYPO3
Żaden z czołowych systemów CMS opartych na licencji Open-Source nie posia - da tak rozbudowanego framework'a MVC jak TYPO3. Społeczność TYPO3, obserwując rozwój różnych konkurencyjnych rozwiązań programistycznych oraz stosując podejście do aplikacji internetowych zawartych we FLOW3, postanowiła stworzyć standard do tworzenia rozszerzeń. Dziś mijają już ponad 3 lata od powstania Extbase.
Piotr Molewski
KLUB LIDERA IT
Jak całkowicie odmienić sposób programowania, używając refaktoryzacji
Większość programistów wie, co to refaktoryzacja, zna zalety wynikające z jej stosowania, zna również konsekwencje zaniedbywania refaktoryzacji. Jednocześnie wielu programistów uważa, że refaktoryzacja to bardzo kosztowny proces, wymaga wysiłku i brak na nią czasu w szybko zmieniających się warunkach biznesowych.
Mariusz Sieraczkiewicz
KLUB DOBREJ KSIĄŻKI
"Wzorce Projektowe"
Rafał Kocisz