niedziela, 17 kwietnia 2016

Informatyka w praktyce: więcej Gita! - GitHub i SourceTree

Nieco o tym, czym jest Git i dlaczego warto się z nim zapoznać pisałam już tutaj. Dzisiaj chciałabym temat pogłębić i napisać coś o praktycznych początkach współpracy z systemem kontroli wersji.
Kiedy wiemy już czym jest system kontroli wersji oraz dlaczego opłaca się go używać, warto również dowiedzieć się JAK to zrobić.

Na samym początku będziemy potrzebować repozytorium, w którym przechowywać będziemy tworzone pliki. Najlepiej skorzystać tutaj z gotowego rozwiązania jakie oferuje GitHub. Udostępnia on darmowy hosting plików dla projektów open source oraz umożliwia stworzenie prywatnego, płatnego repozytorium. Oferuje on wiele funkcji, z których niektóre to bugtracker, forki repozytoriów, pull requesty, narzędzia statystyczne itd.

Kolejną rzeczą jaką należy "załatwić" przed korzystaniem z naszego repozytorium, jest klient - aplikacja, którą należy zainstalować lokalnie na komputerze, aby móc korzystać z dóbr oferowanych przez GitHub. Rekomendowaną przez GitHub aplikacją jest SourceTree, jednak nie jest on jedyny z dostępnych na rynku darmowych aplikacji klienckich służących do obsługi repozytoriów GitHub. Nieco więcej o konkurencji, pozwolę sobie napisać prawdopodobnie innym razem.

O tym jak zacząć pracę z GitHub i SourceTree najłatwiej jest dowiedzieć się z wiki, gdzie znaleźć można dokładny opis funkcji i możliwości - krok po kroku i z obrazkami, dlatego uważam, że opisywanie tego po raz kolejny, byłoby niepotrzebną redundancją i kompletnym marnowaniem czasu zarówno mojego, jak i potencjalnych czytelników :)

Korzystanie zarówno z GitHub jak i SourceTree może na samym początku wydawać się nieco skomplikowane. Ale jak kiedyś powiedział ktoś mądry (a konkretne wg. niektórych Johann Wolfgang von Goethe, a innych Thomas Fuller, osobiście stawiam, że obydwaj):

"Wszystko jest trudne, dopóki nie stanie się proste"

zatem najlepszą metodą na nauczenie się korzystania z czegoś, jest używanie tego. W tym przypadku na dodatek nie grozi to niczyją śmiercią, czy katastrofą nuklearną, więc nie ma się czego bać. Ja sama zaczęłam i kontynuuję swoją pracę z Gitem na praktykach studenckich i uważam, że jeśli nie Git, to ogólnie jakikolwiek system kontroli wersji jest rzeczą niezbędna przy pracy nad mniej lub bardziej złożonymi projektami informatycznymi.

Informatyka w praktyce: Code Retreat, czyli szlifowanie programistycznego rzemiosła

Branża IT rozwija się w niesamowitym tempie. Jeżeli się tylko chce, można stać się częścią informatycznego świata, jedyne czego do tego trzeba, to komputer, czas, nieco samozaparcia i świadomość celu, do którego się dąży. Niektórzy wybiorą drogę oficjalną poprzez ukończenie studiów i zdobywanie certyfikatów, inni będą woleli zająć się tym rzemiosłem w domowym zaciszu korzystając z publicznie dostępnych materiałów. Jedno jest pewne - aby programować, trzeba programować. A biorąc pod uwagę szybkość z jaką w dzisiejszym świecie zachodzą zmiany, każdy geek niemal zmuszony jest do ciągłego pogłębiania swej wiedzy i wystawiania jej na próbę.
Z myślą o ludziach, którzy programować już potrafią, ale zazwyczaj borykają się z brakiem czasu i ścigającymi ich "dedlajnami", powstało coderetreat.

1. Co to jest Coderetreat?

Coderetreat to całodzienne, intensywne wydarzenie programistyczne pozwalające uczestnikom skoncentrować się na podstawach rozwoju programowania, bez żadnej presji, a za to z możliwością dzielenia się swoimi pomysłami z innymi uczestnikami. Co roku organizowany jest globalny dzień coderetreat - uczestniczące w nim ośrodki zgłaszają ten fakt, aby każdy, kto chce w nim uczestniczyć, mógł odnaleźć wydarzenie odbywające się w jego okolicy.

2. Dlaczego Coderetreat?

Taka forma nauki pozwala na rozwijanie swoich umiejętności w nieco inny niż "tradycyjny" sposób. Poprzez dzielenie się swoimi ideami i możliwość spojrzenia na programowanie z innej perspektywy, uczestnik ma możliwość szybkiego rozwijania swoich umiejętności. Swego rodzaju rozluźnienie atmosfery spowodowane brakiem ograniczeń czasowych oraz brak sztywno narzuconych reguł, wzmaga kreatywność i pozwala - że tak się górnolotnie wyrażę - wyjść poza schematy. Więcej o zaletach coderetreat m.in. tutaj.

3. Dla kogo to jest?

Idea ta doskonale nadaje się dla każdego programisty, który chce rozwinąć swoje umiejętności (co powinno być celem każdego z nich). Ludzie uczą się przede wszystkim przez robienie tego, czego chcą się nauczyć, a także przez nauczanie innych. Dlatego beneficjentami wyżej opisywanego wydarzenia są zarówno uczestnicy, jak i jego organizatorzy. Czasami tym, co najbardziej blokuje naszą "ewolucję", jest brak możliwości spojrzenia na dany problem z innej niż nasza perspektywy. Niektórym może wydawać się, że dużo lepiej wychodzi im rozwijanie umiejętności w samotności i bez interakcji z innymi przedstawicielami ludzkiego gatunku, jednak nic nie rozwija tak dobrze jak otwartość na pomysły innych ludzi, zrozumienie ich i spojrzenie na daną sprawę z ich perspektywy (a przynajmniej podjęcie takiej próby). Dlatego od czasu do czasu warto dać się zsocjalizować.

4. Historia Coderetreat

O historii pomysłu nie będę się rozpisywać. Warto wspomnieć, że pierwszy "event" zorganizowany został w 2009 roku i od tego czasu jest regularnie powtarzany gromadząc coraz więcej organizatorów oraz uczestników z wielu krajów. A więcej o historii i pomysłodawcach odnajdziecie tutaj.

5. Jak wziąć udział w Coderetreat lub zorganizować wydarzenie?

Najlepiej jest trzymać rękę na pulsie i śledzić informacje na stronie organizatora. Światowy Dzień Coderetreat ma miejsce co roku (w 2016 r. planowany jest na 22. października) i na stronie traktującej o tym, którą odnajdziecie tutaj, można odnaleźć wydarzenie odbywające się w naszej okolicy.
Jeżeli sami chcielibyśmy zorganizować dzień kodowania zgodnie z ideą pomysłodawców, warto skorzystać z gotowych, sprawdzonych pomysłów oraz doświadczeń dotychczasowych organizatorów. Więcej o tym do odnalezienia tutaj oraz tutaj.  

Warto wspomnieć, że o ile w przypadku pierwszego spotkania retreatowców używanym przez nich językiem programowania była Java, inni organizatorzy koncentrowali się na innych językach, jak Ruby. Byli też jednak tacy, którzy odkryli potencjał spotkań opartych na różnorodnych językach programowania, pozwalających uczestnikom na rozwiązywanie tych samych zadań z użyciem różnorodnego podejścia typowego dla danego języka. Według mnie to świetne i niezmiernie pouczające rozwiązanie pokazujące, że zawsze jest więcej niż tylko jedna możliwość podejścia do danego przypadku.

sobota, 12 marca 2016

Informatyka w praktyce. Część pierwsza: Git

Powrót po długim czasie w bardziej już informatycznym stylu - a to za sprawą praktyk, które konieczne są do ukończenia moich wspaniałych studiów.Ponieważ praktyki te wykonuję u mojej Najstarszej Siostry, która jest doświadczonym programistą, istnieje szansa, że czegoś wreszcie się nauczę :)Pierwszym tematem jest system kontroli wersji na przykładzie Git. 

1. Czym jest system kontroli wersji


Za Wikipedią:"System kontroli wersji (ang. version/revision control system) – oprogramowanie służące do śledzenia zmian głównie w kodzie źródłowym oraz pomocy programistom w łączeniu zmian dokonanych w plikach przez wiele osób w różnych momentach czasowych."Do czego takie cuś się przydajeNiezależnie od tego, czy używa się go dla samego siebie, czy dla grupy osób, pozwala on na takie rzeczy, jak śledzenie zmian na plikach, czy w kodzie dokonanych w czasie przez jedną lub więcej osób. Co za tym idzie, porównywać te zmiany, łatwo prześledzić, które zmiany wpłynęły na co, kto dokonał tychże zmian (jak coś zepsuto, to wiadomo kogo stłuc), przywrócić pliki do wcześniejszego, dowolnie wybranego stanu (gdy coś się zepsuło, utracono jakieś pliki lub stwierdziliśmy, że dana droga prowadzi donikąd).Jak działa system kontroli wersjiPodchodząc do sprawy od strony laika można powiedzieć, że najprostszy model kontroli wersji stosowany jest również przez osoby, nie mające o tym zielonego pojęcia, na zasadzie działania czysto intuicyjnego. Kiedy przed stworzeniem obrazu wykonujesz kilka szkiców, a przed wyborem ścieżki w grze RPG klikasz na "save" żeby móc zmienić tą decyzję gdy okaże się, że to jednak nie to co chciałeś, można powiedzieć, że również stosujesz swego rodzaju system kontroli wersji na poziomie basic. Informatycy stworzyli zaawansowane systemy kontroli wersji, aby ułatwić nam życie - dzięki nim, nie musimy pamiętać o tym, by regularnie robić zapisy kolejnych wersji, przechowywać je w kilku miejscach, czy prowadzić dochodzenie mające na celu stwierdzić, kto dokonał jakich zmian we współdzielonych plikach.

2.Rodzaje systemów kontroli wersji

Możemy wyodrębnić trzy rodzaje systemów kontroli wersji: lokalne, scentralizowane i rozproszone.
1. Lokalne systemy kontroli wersji (VCS)
Składają się one z prostej (i oczywiście lokalnej) bazy danych, w której przechowywane są wszystkie zmiany dokonane na śledzonych plikach. Jednym z najpopularniejszych i niekiedy wciąż używanym VCS jest rcs. Służy on jednak do kontrolowania pojedynczych plików i nie nadaje się do śledzenia zmian dokonanych w całych projektach.

2. Scentralizowane systemy kontroli wersji (CVCS)
Powstały jako odpowiedź na zapotrzebowanie kontroli nad plikami, do których dostęp jest możliwy z różnych systemów/ urządzeń. Realizowane są one w architekturze klient-serwer, przy czym serwer jest jeden, a klientów może być wielu. Takie systemy nie tylko dają możliwość współpracy większej ilości osób nad danym zbiorem plików, ale również są łatwiejsze w zarządzaniu niż systemy lokalne. Problematyczne jest tutaj jednak oparcie systemu na tylko jednym serwerze - w przypadku jego awarii, niemożliwa będzie praca na udostępnianych plikach. Kolejny problem to dostęp jedynie do najnowszej wersji śledzonych plików.
Najpopularniejszymi systemami z tej rodziny są: CVS (Concurrent Versions System), jego następca Subversion, czy komercyjny Perforce.

3. Rozproszone systemy kontroli wersji (DVCS)
To z założenia ulepszona wersja CVCS. Mamy tutaj do czynienia z architekturą P2P. W przeciwieństwie do CVCS klienci mają dostęp nie tylko do najnowszej wersji plików - repozytorium zostaje w pełni skopiowane na każdego hosta. Dzięki temu, w przypadku awarii prowadzącej do utraty danych na jednym z serwerów, skopiowane repozytorium może posłużyć do ich przywrócenia. Przykładami DVCS są: wspomniany już wcześniej BitKeeper, Git, Mercurial, Bazaar czy Darcs


3.Git

Nieco historii
Powstanie Git zawdzięczamy developerom jądra Linuxa, będącego rozwijanym przez programistów z całego świata i dystrybuowanym na licencji Open Source. Twórcy ci korzystali początkowo z innego oprogramowania służącego do kontroli wersji nazwanego BitKeeper stworzonego przez firmę BitMover. Od 2005 roku firma zrezygnowała z dystrybucji darmowej wersji swojego oprogramowania dla projektów o otwartym kodzie. I to był koniec współpracy z Linuksiarzami, a także początek Git. Celem twórców Git było stworzenie szybkiego, darmowego oraz prostego w obsłudze systemu kontroli wersji umożliwiającego efektywną pracę dużym grupom programistów jednocześnie i umożliwiającego sprawowanie pieczy nad projektami dużych rozmiarów.

Czym jest Git

Jak wspomniałam wyżej, Git jest rozproszonym systemem kontroli wersji. To co odróżnia go od innych, to przede wszystkim podejście do przechowywania danych - zamiast listy zmian na plikach, Git "sprawdza" stan wszystkich plików w danym repozytorium oraz tworzy referencję do tego stanu (tzw. snapshot lub migawka). Jeżeli jakiś plik w repozytorium pozostał niezmieniony, system nie "przepisuje" go na nowo, ale w danej migawce również odwołuje się do niego za pomocą referencji do jego poprzedniej wersji.

Ważną zaletą Git jest to, że do wykonania większości operacji wystarczy nam dostęp jedynie do lokalnych plików i zasobów. To oznacza nie tylko szybsze działanie, ale również możliwość pracy bez połączenia z serwerem. 


Kolejnym punktem, o którym warto wspomnieć, jest wbudowany mechanizm spójności danych. O tym , jak to działa, przeczytać można tutaj


Stany plików w Git

Pliki, nad którymi pracujemy z pomocą Git, znajdować się mogą w trzech stanach: zatwierdzony (comitted), zmodyfikowany (modified) oraz śledzony (staged). Poniższy obrazek pokazuje jak ma się to do trzech głównych sekcji projektu:






















To tyle, jeśli chodzi o wprowadzenie do samego tematu jakim jest system kontroli wersji oraz Git. W celu zapoznania się ze szczegółami, polecam zapoznać się z książką Pro Git dostępną w całości tutaj (istnieje również polska wersja, odnosi się ona jednak do wcześniejszej wersji książki. Do odnalezienia tutaj).

Dla tych, którzy ciekawi są czym tak naprawdę różni się Git od swoich konkurentów, polecam następujące wpisy:





Wpisy te są z różnych lat i zapewne w każdym z systemów zmienione zostało wiele z wymienianych właściwości. Moim zdaniem dobrze jest jednak mieć świadomość tego, jak różni ludzie podchodzą do tej sprawy i co w danym rozwiązaniu jest dla nich najważniejsze

Jesienne porządki informatyka

Trwają u mnie przygotowania do Wielkiego Formatu. Przygotowania też niemałego formatu, bo się dużo syfu narobiło. To, że swoje życie próbuję jakoś po części uporządkować, wiadomo nie od dziś. Wiadomo też, że raczej kiepsko mi to wychodzi. Zarówno w tym psycho-mentalnym, jak i bardziej fizycznym sensie (chociaż dziś na prośbę siostry wyniosłam śmieci i staram się przynajmniej gary myć po sobie na bieżąco). Postanowiłam jednak zrobić porządek z moim staruszkiem- laptopem, bo szkoda byłoby gdyby nagle odmówił współpracy, a sporo syfu się na nim narobiło. Zaniedbałam się trochę jeśli chodzi o robienie back-upów na bieżąco, więc teraz codziennie jakaś część  danych zostaje sprawdzona, to co niepotrzebne usunięte, a to co potrzebne - przenoszone na wirtualne dyski w celu zachowania na przyszłość i ewentualnego zgrania tego co najpotrzebniejsze z powrotem po tym jak już zrobię sobie reinstalację systemu.
Co zabawne- zaczęłam nawet porządkować sobie zakładki w przeglądarce! Nie spodziewałam się, że jest tego aż tyle. Stanowczo zbyt dużo jak na zakładki. No i posegregowane tylko częściowo. Sprawdzam więc te linki przypominając sobie przy okazji dawno już zapomniane, a ciekawe strony, kategoryzuję, usuwam adresy prowadzące do nikąd...
Jak już posprzątam sobie kompa, nadejdzie czas na porządkowanie poczty, ale odsyfianie lapka nie zajmie mi na pewno mniej niż tydzień. W końcu jednak trzeba się nim zająć. W końcu służy mi już długo, więc też muszę o niego zadbać.
Po reinstalacji planuję lepiej i bardziej świadomie go użytkować, w dodatku dużo lepie go zabezpieczyć (co do tego, kilka naprawdę świetnych wskazówek znaleźć można tutaj : https://docs.google.com/document/d/1iiKYZJWGihNculKbEyA5agI-32EjaYuEvcTy-XTu23Y/edit)
w końcu bycie "informatykiem" zobowiązuje.

Tak czy siak, sporo mam na głowie. Okazało się, że jednak muszę przygotować nowe CV, bo czeka mnie rekrutacja do nowego projektu. W sumie cieszę się, to może być spora szansa, a dodatkowo podczas ostatnich tygodni niewiele się rozwijam, za to sporo stresuję przez użeranie się z hinduskimi kolegami - jednak przepaść mentalno-kulturowa bardzo rzutuje na współpracę, tudzież jej brak. A nuż może się powiedzie znaleźć miejsce w jakimś projekcie bardziej zbliżonym do IT?

Z nauką niestety nieco się obijam. Pomimo tego, że ostatnio uczę się nawet w tramwaju, wciąż brak mi czasu i sił (a może odpowiedniej jego organizacji i motywacji, tudzież koncentracji) aby nauczyć się wszystkiego co powinnam. Pociesza mnie to, że szykuje się długi weekend, który planuję poświęcić na naukę matematyki dyskretnej, algebry, javy i pisanie skryptów w C. Książkę do algorytmiki zostawiam na razie na przejażdżki tramwajem (chociaż ostatnio wyparła ją "Wojna w blasku dnia" Petera V. Brett'a, ale to tylko dlatego, że jest za dobrze napisana, a ja kocham tę historię, naprawdę! No i od czasu do czasu Murakami, którego książki regularnie pożycza mi koleżanka z pracy. Ale przysięgam, że tylko czasami. Nawet pomimo tego, że regularnie. No).

A jeśli już przy porządkach na komputerze, to może i małe porządki wewnątrz... Wiem, wiem. Nie wszystko na raz. Ale ostatnio wyjątkowo łatwo wyprowadzić mnie z równowagi. Wystarczy słowo i krzyczę, albo płaczę. Zawsze byłam nadwrażliwa, ale chyba potrzebuję nieco więcej wyciszenia i koncentracji. Zastanawiam się, czy nie urządzić sobie kilkudniowego postu tak na oczyszczenie ciała i ducha. Według niektórych to bardzo zdrowe, wg innych - wręcz przeciwnie, ale może pomoże, a i moje finanse na tym mniej ucierpią (ach, ten mój materializm).

No, ale dość gadania - teraz wracam do "sprzątania" i do nauki na jutrzejszego kolosa, chociaż już późno. A wyśpię się po śmierci . Tudzież na kolejnych wykładach :D

Edit: zauważyłam, że po aktualizacji wygląda to tak, jak bym opublikowała tego posta w marcu 2016. Otóż nie... To jest post z jesieni i to nawet nie tej ostatniej a co najmniej 2014. Nie pomyliły mi się pory roku, pomyliły mi się przyciski.