Wykrywanie błędów programu i wycieków pamięci za pomocą narzędzia Valgrind [Podstawy Programowania]

Wykrywanie błędów programu i wycieków pamięci za pomocą narzędzia Valgrind

Autor: Mateusz Nowak, student II roku, kontakt: 209409@edu.p.lodz.pl Programy tworzone w ramach Podstaw Programowania 2 będą przechodzić przez dodatkowe testy. Ma to na celu przygotowanie Studentów do pisania wydajnych programów, poprawnie zarządzających pamięcią. Podczas pracy danej aplikacji może być konieczne przechowywanie ogromnych struktur danych. Przygotowanie dużej tablicy już na etapie tworzenia programu nie jest dobrym rozwiązaniem, ponieważ w ten sposób marnujemy pamięć kiedy jej nie używamy. Dodatkowo, ze względu na ograniczony rozmiar stosu programu, taka operacja tworzenia może się po prostu zakończyć niepowodzeniem. Rozsądnym rozwiązaniem wydaje się więc wydzielenie obszaru pamięci sterty, wykonanie operacji na danych, a następnie zwolnienie zarezerwowanego bloku. Niestety, często zdarza się, że zapominamy o tym lub wykonujemy to w niewłaściwy sposób. Niepoprawne działanie programu wpływa na ogólną kondycję systemu operacyjnego. W zależności od wewnętrznej polityki zarządzania pamięcią, może rozpocząć się wymiana danych na dysk twardy, zamykanie innych programów (albo programu-winowajcy), znaczące spowolnienie lub całkowite zawieszenie się systemu.

Dostępne rozwiązania

Jest wiele możliwości monitorowania zużycia pamięci. Zaawansowane środowiska programistyczne, takie jak Visual Studio, podczas debugowania programu wyświetlają wszystkie żądane informacje: Jest także możliwość generowania odpowiedniego raportu z poziomu linii komend. W systemie testów maszynowych wykorzystywany jest Memcheck - składnik pakietu Valgrind, służacego do profilowania (monitorowania i optymalizacji) programów. Więcej informacji o dostępnych narzędziach dostępne jest na oficjalnej stronie. Warto wspomnieć, że pakiet ten nie jest dostępny dla systemu Windows. Można jednak ten problem rozwiązać, używając wirtualnej maszyny albo dostępnego w nowych kompilacjach 64-bitowego Windows 10, komponentu Windows Subsystem For Linux.

Rozpoczęcie pracy z narzędziem

Zakładamy, że został już utworzony program w języku C (C++ też jest wspierany), i chcemy go przetestować. W pierwszej kolejności należy go skompilować z flagami debugowania: $ gcc - g nazwaPliku. c - o program Powstanie wynikowy plik program . Aby sprawdzić jego działanie, wystarczy wpisać w terminalu: $ . / program Jeśli program nie działa poprawnie, pojawią się odpowiednie komunikaty, np. „Aborted” („Zatrzymano”) lub „Segmentation fault” („Naruszenie ochrony pamięci”), i jego praca zostanie zatrzymana. Znalezienie źródła problemu jest możliwe dzięki następującej komendzie: $ valgrind -- leak - check = full . / program Domyślnie używanym narzędziem jest Memcheck, więc nie musimy uwzględniać tego w poleceniu. W dalszej części dokumentu, mówiąc „Valgrind”, będziemy mieli na myśli ten konkretny komponent. Wyjście programu składa się z informacji o samym narzędziu, błędach w testowanym programie (ich rodzaj i źródło) i podsumowaniu zużytej pamięci. Aby dokładnie opisać działanie Valgrinda, utworzony został prosty program naszpikowany błędami. Będziemy likwidować je krok po kroku, co opatrzone będzie dużą ilością zrzutów ekranu.

Przebieg pracy z narzędziem

Oto nasz przykładowy program:

Niepoprawne wartości funkcji

W przypadku niektórych funkcji bibliotecznych, pewne wartości nie mają sensu. Niemożliwe jest na przykład utworzenie bloku w pamięci o ujemnym rozmiarze. Takie błędy są wykrywane i odpowiednio opisane. Oto wynik działania programu. Linie zaczynające się od ==numer== , to wynik działania Valgrinda: Rozwiązywanie błędów najlepiej zacząć od pierwszego z nich. W tym przypadku wartość używana przez funkcję malloc() jest ujemna (-4). Rzeczywiście, w kodzie źródłowym, w linii 10. znajduje się niepożądany znak: * ( bar + i ) = ( int * ) malloc ( - sizeof ( int ) ) ; Po usunięciu błędu należy skompilować program i uruchomić poprzez narzędzie jeszcze raz.

Nieprawidłowy zapis/odczyt

Aktualna wersja kodu: Raport z Valgrinda: Teraz zajmijmy się błędem „Invalid write of size 8” w linii 7 (możliwy jest również błąd „Invalid read of size…”) Valgrind pozwala na wykrywanie zapisu i odczytu danych w niedozwolonych miejscach. Błąd jest trudniejszy do wykrycia, ale ostatecznie okazuje się, że użyliśmy sizeof(int) zamiast sizeof(int*) . Docelowo chcieliśmy utworzyć blok 64 wskaźników do zmiennej typu int, zamiast bloku 64 zmiennych typu int. Co ciekawe, ten błąd nie wystąpi, jeśli program bedzie skompilowany dla 32-bitowych systemów (ponieważ w takim przypadku int oraz int* byłyby takich samych rozmiarów).

Nieprawidłowe alokacja/zwalnianie pamięci

Aktualna wersja kodu: Raport z Valgrinda: Pierwszy z błędów: W tym przypadku do funkcji free() został wysłany niepoprawny wskaźnik na blok danych. Jest on przesunięty o 24 bajty w prawo, względem początku 512-bajtowego bloku („Address 0x5204058 is 24 bytes inside…”). Aby zaprezentować dodatkowe możliwości Valgrinda, tymczasowo usuniemy niepoprawną linię kodu.

Brak zwalniania pamięci

Jeżeli program nie został zakończony przedwcześnie (np. z powodu naruszenia ochrony pamięci), na końcu raportu powinny znajdować się informacje o zaalokowanej pamięci. Aktualna wersja kodu: Podsumowanie: Oto możliwe rodzaje wycieków: Definitely lost – istnieje co najmniej jeden wskaźnik na pierwszy element bloku pamięci. Błąd wystąpi jeżeli nie użyjemy funkcji free() , najpóźniej na końcu działania programu. W przedstawionym przykładzie utworzono blok 64 wskaźników. Ponieważ wskaźniki mają rozmiar 8 bajtów, to 8 * 64 = 512.

Indirectly lost – pod koniec działania programu istnieją zaalokowane bloki pamięci, na które nie wskazuje żaden wskaźnik. Są nazwane „lost”, ponieważ programista przy kończeniu pracy programu nie ma już możliwości ich zwolnić. Tutaj zostały zaalokowane 64 bloki po 4 bajty = 256 bajtów.

Possibly lost – istnieją bloki pamięci, w przypadku których Valgrind nie jest w stanie określić, czy są still reachable czy definitely lost .

Still reachable – istnieją wskaźniki na pewien fragment bloku danych, ale nie na jego początek (więc nie można ich bezpośrednio użyć np. w funkcji free() ). W każdym przypadku podana jest ilość operacji alokowania i zwalniania pamięci. W ten sposób można sprawdzić, czy nie alokujemy/dealokujemy zbyt wiele razy.

Niezamknięte uchwyty do zasobów

Jeżeli w trakcie pracy programu zostanie otworzony uchwyt do zewnętrznego zasobu (np. pliku), a nie zostanie poprawnie zamknięty, również pojawią się odpowiednie informacje. W razie wątpliwości, można uruchomić Valgrinda z parametrem –track-fds=yes : W powyższym przykładzie: deskryptor pliku 0 - standardowe wejście

deskryptor pliku 1 - standardowe wyjście

deskryptor pliku 2 - standardowe wyjście błędów

deskryptor pliku 3 - plik z raportem Valgrinda

deskryptor pliku 4 - otwarty przykładowy plik

Finalna wersja programu

Raport z Valgrinda: Jak widać, nasz program działa teraz bezbłędnie.

Podsumowanie

15 prostych narzędzi do tworzenia biznesowych aplikacji na smartfony

Spis treści

Produkcja aplikacji na smartfony i tablety nie należy do najszybszych i najprostszych zadań. Pomóc w tym mogą jednak platformy umożliwiające projektowanie ich bez konieczności ingerencji w kod (lub przy małej ingerencji). Narzędzia te pozwalają na stosowanie metody drag-and-drop ("przeciągnij i upuść") czym przypominają zabawę klockami lub popularne niegdyś edytory stron internetowych WYSIWYG. Tak zwane narzędzia "bez kodu" mogą w niektórych przypadkach przyśpieszyć pracę programistów i są zupełną nowością dla laików, którzy będą mieli okazję na stworzenie swoich własnych aplikacji na mobilne urządzenia.

Poniżej przyglądamy się 15 najciekawszym narzędziom tego typu. Pozwalają one zaoszczędzić przedsiębiorstwom wiele czasu i pieniędzy.

AgilePoint NX

AgilePoint NX

Choć AgilePoint rozpoczął swoje istnienie jaok narzędzie do wdrażania systemów BPM (Business Process Management - zarządzanie procesami biznesowymi) w Microsoft SharePoint, najnowsza wersja AgilePoint NX to jeden z podstawowych programów do szybkiego i niewymagającego znajomości kodu tworzenia aplikacji. Środowisko to łączy w sobie narzędzie typu "przeciągnij i upuść" do łatwej edycji projektu (App Builder) oraz silne wsparcie połączenia z zewnętrznymi systemami.

AgilePoint NX pozwala tworzyć responsywne, dopasowane do różnych urządzeń aplikacje internetowe bez konieczności pisania własnego kodu programistycznego. Jako dodatek AppBuildera, producent dostarcza także prosty program do tworzenia formularzy online, narzędzie do tworzenia raportów (włączając w to różnego rodzaju wykresy) i mapowania informacji. Platformę tę zainstalować można w prywatnej lub publicznej chmurze SaaS, a także stacjonarnie, na swoim dysku twardym. Koszt wynosi od 5 do 125 dolarów za licencję, w zależności od liczby aplikacji i typu licencji.

Appery.io

Appery.io to oparta na chmurze platforma do tworzenia aplikacji mobilnych i responsywnych stron używających technologii webowych. Wśród dostępnych narzędzi jest tu zarówno graficzny edytor ("przeciągnij i upuść"), jak i bardziej zaawansowane narzędzia programistyczne. Co ważne, dzięki technologii cloud-computing niepotrzebne jest każdorazowe pobieranie i instalowanie danych, a wszystko procesy wykonują się po stronie aplikacji.

Appery.io korzysta z Apache Cordova - platformy pozwalające na tworzenie aplikacji w HTML5, CSS3 i JavaScript. Dostępna jest pokaźna biblioteka pluginów i liczne pomoce przy tworzeniu stron wykorzystujących najnowsze technologie. Narzędzie dobrze współpracuje z systemami operacyjnymi Android, iOS i Windows Phone dostosowując działanie do ich możliwości. - Dostęp do funkcji urządzeń takich jak np. geolokacja, wibracje, aparat, lista kontaktów itd. daje zupełnie nowe możliwości projektowania - zauważają eksperci z agencji marketingowej Ideo Force, którzy chętnie używają tego rozwiązania.

Appian Quick Apps

Appian Quick Apps

Appian skorzystał z okazji, by zmienić swój produkt do zarządzania procesami biznesowymi w platformę do tworzenia aplikacji mobilnych, co zajęło mu około dwóch lat intensywnego rozwoju. Appian pozwala developerom na tworzenie i wdrażanie aplikacji oraz interfejsu użytkownika na systemy operacyjne iOS, Android oraz jako aplikacje webowe. Ważnym elementem usługi jest możliwość prowadzenia pracy zespołowej, monitorowania zdarzeń i zarządzania zadaniami. Mamy tu też dostęp do danych biznesowch, raporty z wykresami, przechwytywanie multimediów, a wszystko z wielowarstwowymi zabezpieczeniami z uwierzytelnianiem typu SAML (Security Assertion Markup Language).

BizAgi BPM Suite

BizAgi BPM Suite

BizAgi jest dostawcą usług BPM (Business Process Management - zarządzanie procesami biznesowymi), który zbudował swój własny, oparty na systemie Windows, program służący do modelowania i dokumentowania procesów (Process Modeler). Wchodzi on w skład większego narzędzia do wdrażania aplikacji mobilnych i sieciowych z dodatkiem wirtualnego modelowania danych i projektowania interfejsu użytkownika, a także modulowania przepływu pracy. Silnik BizAgi działa w oparciu o platformy .NET oraz Java EE.

Caspio Bridge

Caspio Bridge

Caspio zaczął działalność w roku 2000 jako aplikacja do tworzenia internetowych aplikacji bazodanowych i platforma skierowana do przedsiębiorców. Od tego czasu bardzo rozszerzył się zakres działania narzędzia - w obrębie usług, integracji, opcji bezpieczeństwa i wdrażania. Caspio opiera swoje aplikacje na bazach danych SQL, a do tego udostępnia webowy interfejs do ich zarządzania. Przy jego pomocy możesz projektować swoją aplikacje internetową przy użyciu interfejsu graficznego, z generatorem raportu, edycją kodu JavaScript oraz interfejsami REST oraz SOAP API.

Koszt używania Caspio Bridge to od 79 do 999 dolarów miesięcznie. Oprogramowanie skierowane jest do bardziej zaawansowanych developerów, a przede wszystkim większych przedsiębiorstw obsługujących duże zasoby danych.

K2 Blackpearl oraz Appit

K2 Blackpearl oraz Appit

K2 to narzędzie do tworzenia aplikacji mobilnych i sieciowych, pozwalające na korzystanie z niestandardowych formuł, wielu widoków czy przechowywania i wdrażania projektów w chmurze. Istnieje możliwość pracy offline i synchronizacji z chmurą, gdy użytkownik będzie online. Aplikacje K2 są dostępne dla iOS, Androida i Windows Phone, zaś usługi cloud-computing oparte są na serwerach z systemem Windows.

K2 Blackpearl w standardowej wersji kosztuje 100 dolarów za licencję dla jednego użytkownika, zaś K2 Appit for SharePoint to wydatek rozpoczynający się od 500 dolarów miesięcznie jako usługa chmurowa.

Kony Visualizer

Kony Visualizer

Kony Visualizer to środowisko programistyczne typu "przeciągnij i upuść" umożliwiające budowę natywnych oraz sieciowych aplikacji dla telefonów, tabletów, komputerów osobistych i innych urządzeń. Jeśli chodzi o silnik, Kony posługuje się interfejsem JavaScript API. Użyty framework i wieloplatformowe szablony ułatwiają w szybkim zaprojektowaniu jednolitego interfejsu użytkownika dla poszczególnych urządzeń czy będą to smartfony i urządzenia mobilne czy pulpit stacjonarnego komputera. W środowisku tym można też projektować dla takich urządzeń jak choćby Apple Watch.

Przy pomocy wtyczki do Photoshopa, możliwa jest konwersja projektów z kombajnu graficznego Adobe do środowiska Kony.

MATS BPM

MATS BPM

MATS jest narzędziem do tworzenia aplikacji BPM przy małej edycji kodu programistycznego. Udostępnia szybkie środowisko do projektowania metodą drag-and-drop. Posiada spore możliwości modelowania i automatyzacji procesów, a także dobre narzędzia do projektowania responsywnego interfejsu użytkownika, który działałby dobrze na różnych urządzeniach. Dzięki MATS BPM możliwe jest tworzenie aplikacji na iOS oraz Androida, a także tworzenie raportów i analiz w czasie rzeczywistym czy integrację z istniejącymi już systemami. Narzędzie może być umieszczone na dysku lub w bezpiecznej chmurze obliczeniowej. Istnieją bardzo różne wersje programu, które znacznie różnią się cenowo.

Mendix App Platform

Mendix App Platform

Mendix korzysta z działającego w systemie Windows narzędzia Business Modeler, które pozwala na projektowanie responsywnych aplikacji sieciowych, działających w przeglądarkach internetowych: tradycyjnych i mobilnych. W narzędziu tym stworzymy również hybrydowe aplikacje mobilne dla telefonów i tabletów używających PhoneGapa do osadzenie aplikacji internetowych w wersji offline w urządzeniu mobilnym. Oprogramowanie to pozwala na pracę na własnej maszynie przy projektowaniu i testach, a także korzystania z platform chmurowych Mendix, AWS i Azure lub też platform Cloud Foundry.

Dostęp do platformy Mendix App i Mendix Modeler można uzyskać za darmo, jednak koszt bardziej rozbudowanych wersji może sięgnąć aż do 1675 dolarów na miesiąc. Wybór pakietu zależy od potrzeb użytkownika.

MicroPact Entellitrak

MicroPact Entellitrak

Micropact Entellitrak jest typowo biznesową platformą służącą do tworzenia aplikacji związanych z automatyzacją procesów biznesowych i organizacją zadań. Zapewnia ona silne wsparcie dla modelowania danych i gromadzenia informacji na temat podmiotów gospodarczych. Moduł mobilny pozwala aplikacji Entellitrak na generowanie mobilnych wersji istniejących arkuszy z tradycyjnych komputerów, ich podgląd a także edycję. Narzędzie to jest bardzo zaawansowane i wyposażone w 20 wstępnych konfiguracji pozwalających na tworzenie nowych projektów związanych z gromadzeniem i przetwarzaniem danych.

MicroPact Entellitrak posiada także specjalną wersję dla instytucji rządowych. Narzędzie wykorzystywane jest m.in. w programach reagowania kryzysowego.

MIOedge

MIOedge

MIOedge jest platformą dostarczającą aplikacje skupione skupione na zarządzaniu danymi, które łatwo dostosować można do potrzeb przedsiębiorstwa. MIOsoft jest firmą, która specjalizuje się w aplikacjach intensywnie przetwarzających wielkie ilości danych oraz platformach big-data, takich jak Apache Hadoop. Możliwości tego narzędzia obejmują modelowanie danych, PReP (PowerPC Reference Platform), kontrolę jakości i przepływu. Firma oferuje również kontenery zgodne z wymaganiami prawnymi dotyczącymi ochrony danych jak PCI DSS oraz HIPAA.

Nintex Workflow

Nintex Workflow

Nintex jest oprogramowaniem w zakresie automatyzacji i optymalizacji procesów biznesowych, współpracującym ze środowiskiem Microsoft Office 365, SharePoint oraz Project Server. Oprócz optymalizacji przepływów, Nintex zapewnia szybką integrację z dowolnym systemem zewnętrznym jak np. iOS, Android, Windows Phone i Windows. Nintex Mobile wspiera pracę offline i online z synchronizacją w czasie rzeczywistym, a dodatkowo obsługuje zdjęcia, filmy i tekst. Narzędzie dostępne jest zarówno w chmurze, jak i zainstalowane na lokalnej maszynie.

Ceny abonamentu Nintex Workflow, jak w przypadku większości opisywanych narzędzi, zależne są od wybranego pakietu i dalszych potrzeb klienta.

OutSystems Platform

OutSystems Platform

OutSystems zapewnia narzędzie do tworzenia aplikacji z małą edycją kodu, generujące kod programistyczny .NET lub Java (w zależności od wyboru platformy). OutSystems pozwala na tworzenie aplikacji internetowych, które można obsługiwać zarówno przy użyciu komputerów stacjonarnych, jak i smartfonów czy tabletów. Środowisko programistyczne OutSystems działa w systemie Windows, a platforma może działać na serwerach Windows, IIS lub Linux i serwerze aplikacji Java. OutSystems potrafi zintegrować się z głównymi bazami danych, SAP, Amazon RDS, e-mailami, smsami i systemach chmurowymi jak Facebook czy Dropbox.

Koszt abonamentu platformy OutSystems zależny jest od liczby aplikacji i użytkowników.

Microsoft PowerApps

Microsoft PowerApps

Microsoft PowerApps jest prostym w użyciu narzędziem do tworzenia biznesowych aplikacji sieciowych, które mogą również działać na systemach iOS oraz Android. Projektowanie odbywa się w systemie Windows, w aplikacji PowerApps Studio, zaś zarządzanie aplikacjami odbywa się poprzez narzędzie sieciowe (uruchamiane w przeglądarce). Dostępnych jest wiele wstępnie skompilowanych szablonów do zarządzania danymi, lecz można także pokusić się o stworzenie własnego od podstaw. Wygląd i działanie aplikacji ustawiamy metodą "przeciągnij i upuść".

Źródła danych mogą obejmować pliki z Excela zapisane na OneDrive, Dropboksie lub Google Drive, obiekty Salesforce, listy SharePoint Online, zapisy z Microsoft Dynamics CRM, bazy danych Azure SQL, dane z Office'a 365, Twittera czy Microsoft Translate.

ServiceNow Platform

ServiceNow Platform

ServiceNow jest platformą dla aplikacji korporacyjnych, która pomaga dużym przedsiębiorstwom w strukturyzacji i automatyzacji przepływu pracy, zarządzaniu danymi i zasobami oraz wdrażaniu aplikacji w chmurze. ServiceNow Studio to oparte na chmurze i używane z poziomu przeglądarki internetowej środowisko programistyczne dla twórców aplikacji oraz administratorów. Narzędzie oferuje dodatkowo sklep aplikacji, zawierający obecnie 165 programów utworzonych przy pomocy ServiceNow przez różnych producentów.

Narzędzia dla programisty

Każda osoba zamierzająca zostać programistą błyskawicznie orientuje się, że pisanie kodu nie ogranicza się do notatnika i konsoli tekstowej. Na pewno nie w dzisiejszych czasach, w których właściwie pojawia się problem, które narzędzia dla programisty wybrać. Dzisiaj przedstawię wam oręż niezbędny na zero-jedynkowym polu.

Framework

Framework można nazwać platformą do budowania aplikacji, która dostarczając szereg bibliotek i zewnętrzny kod autorstwa jego twórców, rozszerza możliwości programisty oraz zdecydowanie ułatwia mu szybką implementację danego rozwiązania. Frameworki nie zmieniają struktury języka, ale za to dostarczają wielu nowych, szybszych rozwiązań poprawiając przy tym produktywność programisty. Przykładowo QT, w którym pracuję wystarczą dosłownie dwie linijki kodu do stworzenia okienka programu, podczas gdy w C++ z biblioteką WinAPI jest to właściwie kilkanaście linijek.

Do frameworków należą:

SFML – platforma umożliwiająca sprawne tworzenie gier czy aplikacji multimedialnych. Właśnie game development jest popularnym zastosowaniem SFML.

Ruby on rails – popularny framework Ruby’ego do tworzenia aplikacji internetowych opartych o model MVC (Model-View-Controller).

Angular – niezbyt lubiany, ale za to szalenie potężny framework ze stajni Google’a do zastosowań internetowych.

Vue.js – przydatne narzędzie do tworzenia interfejsu użytkownika w javascript.

To tylko kilka dostępnych narzędzi, a jest ich naprawdę cała masa. Szkoda Twojego czasu na wymienianie ich wszystkich. Jeżeli dopiero się uczysz i zastanawiasz się, który framework wybrać to po prostu wymyśl projekt i sprawdź za pomocą czego będziesz mógł go stworzyć. Uczyć się będziesz na bieżąco. Wszystko zależy od projektu.

IDE – zintegrowane środowisko programistyczne

Narzędzie łączące wiele pomniejszych funkcjonalności w jedno. W jednym narzędziu mamy możliwość pisania w edytorze ułatwiającym to za pomocą podpowiedzi, kolorowania składni czy śledzenia struktury plików w projekcie, debugowanie kodu i jego kompilacja oraz pisanie np. testów jednostkowych. Niektóre wprowadzają wewnętrzną obsługę systemu kontroli wersji.

Kilka mniej i bardziej znanych środowisk:

Microsoft Visual Studio – rozbudowane, wielojęzykowe IDE dostępne również w ramach darmowej licencji.

Eclipse – popularny open source’owy projekt znany chyba każdemu programiście Javy.

Code::Blocks – podstawowe, dla wielu pierwsze narzędzie do pracy z C++. Na późniejszych etapach rozwoju jako programista rzadko kiedy wystarcza.

QT Creator – zaawansowane IDE od twórców frameworka QT. Posiada wbudowany Designer do tworzenia interfejsu użytkownika.

Android Studio – narzędzie dla programujących pod system Android niekoniecznie w samej Javie.

System kontroli wersji

Jest to oprogramowanie umożliwiające kontrolę nad zmianami wprowadzanymi do projektu. Dokumentowane i komentowane są wszelkie zmiany w kodzie. Jeżeli na przykład tworząc aplikację coś po drodze sknocimy to zawsze możemy wrócić do działającej wersji. System kontroli wersji jest nieoceniony przy pracy indywidualnej, ale niezbędny przy pracy grupowej. Wtedy każdy programista biorący udział w projekcie może oddzielnie pracować nad swoimi zadaniami bez ryzyka, że wejdzie w drogę swoim kolegom.

Ciekawostką jest fakt, że korzystają z niego nie tylko programiści monitorujący zmiany w kodzie, ale również na przykład scenarzyści do gier. W każdym bądź razie, systemy kontroli wersji to narzędzia dla programisty, bez których praca nad średnio zaawansowanymi, jednoosobowymi projektami byłaby prawie niemożliwa, a co mają powiedzieć wielomilionowe przedsięwzięcia?

Bezapelacyjnie za króla systemów kontroli wersji uznawany jest GIT. Jego znajomość jest w wymaganiach praktycznie każdej oferty pracy dla programisty. Z pewnością należy mu się dedykowany wpis na moim blogu z technicznym wprowadzeniem do tematu.

Do mniej popularnych narzędzi zaliczają się Mercurial czy też Subversion.

Narzędzia do notowania

Dobre pomysły i rozwiązania potrafią wyparowywać z głowy równie szybko co się w niej pojawiać. Dlatego dobrze jest mieć na biurku papier i długopis, aby w razie potrzeby urzeczywistnić swoje myśli. Jestem tradycjonalistą, więc wolę takie klasyczne rozwiązanie od cyfrowych odpowiedników notatek, ale to już kwestia indywidualna. Osobiście korzystam z tablicy suchościeralnej, brulionu i kolorowych karteczek do zapisywania drobnych zadań do zrobienia.

Programistyczne grupy wsparcia

Może trochę nie na miejscu jest porównywanie kolegów z branży do narzędzi, ale trudno

Jarosław Kułak
Jarosław Kułak

Leave a Comment