yanoo.pl

mentally disabled

Umarł SVN, niech żyje Git!

with one comment

Dawno, dawno temu na inżynierii oprogramowania opowiadali o gałęziach projektu, że jest główna, deweloperska, i jeszcze inne w zależności od potrzeb. I że to jest dobre i tak należy robić, bo dzięki temu jest porządek, a główna linia projektu “zawsze” stabilna. Potem przyszło życie i brutalne grzmotnięcie o ziemię – wszyscy walą do głównego zbiornika1, najlepiej jeszcze z komentarzem “update” śląc z regularnością szwajcarskiego zegarka commity po kilkadziesiąt (albo i więcej) plików wprowadzających zmiany dotyczące wielu aspektów projektu 2.

Ludzie to z natury leniwe zwierzęta, a stworzenie gałęzi w SVN-ie wymaga, by doprosić się o nią u odpowiedzialnego za repozytorium. Gałąź sama w sobie zresztą kosztuje – jest niczym innym jak kopią projektu na dysku. O ile jeszcze jakieś ważniejsze gałęzie może i powstają (ale to tylko przy dużych projektach, bo małe i większość średnich kończy bez nich), to już wyobrażacie sobie prosić admina “zrób mi brancha bug666″? Nawet jeśli problem nas nie dotyczy (bo mamy wystarczającą władzę, żeby utworzyć gałąź), to wyobraźmy sobie wściekłość współpracowników, kiedy przyjdzie im ściągać XXX MB plików, bo jakiś debil zrobił kopię tylko po to, żeby wprowadzić i przetestować na spokojnie poprawkę w jednym-dwóch plikach. Gdyby tak zaczął robić każdy programista w projekcie, to mielibyśmy piękne wyścigi kto komu szybciej zapełni quotę.

W tym miejscu pojawia się rycerz na białym koniu płodząc cudowne dziecko z jego killer featurem dającym gałęzie “za darmo”:

git checkout -b bug666

I już. W ułamki sekund. A co najważniejsze – nie tworzymy żadnej nadmiarowej kopii, a współpracownicy dzięki temu, że mamy do czynienia z rozproszonym systemem w ogóle nie będą wiedzieli o istnieniu naszej tymczasowej gałązki. Oczywiście – nic nie stoi na przeszkodzie, by stała się ona pełnoprawną gałęzią całego projektu – wystarczy pchnąć ją na serwer:

git push origin3 bug666:bug666

i dopuścimy w ten sposób kolegów do pracy nad demonicznym błędem.

Takie podstawy opisuje jednak pierwszy lepszy tutorial, które zresztą rosną jak grzyby po deszczu. Niestety, sporo osób używa jednak git-a tak samo jak svn-a ograniczając się do podstaw4, które dostarczają owe tutoriale. Być może powodem tego jest wspomniane lenistwo – no bo jak to, mam poświęcić parę(naście) godzin na zapoznawanie się z jakimś tam systemem kontroli wersji?! Git to jednak nie tylko trzęsienie ziemi wywołane na wstępie, ale miarowe budowanie napięcia wraz z poznawaniem kolejnych możliwości tego cudownego narzędzia.

Wyobraźmy sobie błogą sytuację radosnego dłubania nad jakimś nowym-wspaniałym-pomysłem, który sprawi, ze nasz serwis zacznie zarabiać. Nagle jednak dostajemy telefon od wściekłego szefa, że zobaczył jakieś dupy na stronie (tzw. debug mode). Oprócz skoku przez okno mamy do wyboru kilka możliwości posprzątania po sobie, ale tak, by nowe zmiany, rozgrzebane i niedokończone, nie poszły live. Niestety, nie możemy ot tak zmienić gałęzi na główną i od niej odbić na tworzenie poprawek – git nie pozwala zmienić gałęzi, w której powstały jakieś nie zatwierdzone zmiany. Co możemy zrobić?

1. Cofnąć wszystko: git reset –hard — ale to głupi pomysł, zwłaszcza, jeśli nad nowymi zmianami pracowaliśmy od dłuższego czasu i niczego jeszcze nie commitnęliśmy.

2. Zrobić po prostu commit: git commit -am “Później dokończę” — ale jak widać nie wygląda to za pięknie.

3. “Ukryć zmiany“: git stash — cudownie genialne w swojej prostocie rozwiązanie. Ukrywać możemy kiedy chcemy, co chcemy, podobnie jak z przywracaniem ukrytych zmian: git stash pop.

Później możemy po prostu utworzyć nową gałąź na bazie głównej: git checkout -b dupa master, wprowadzić poprawki, scalić w głównej gałęzi, wysłać na serwer i wrócić do pracy nad nowym ficzerem.

Inna sytuacja – nawet jeśli uważamy, że jeden commit = jedna zmiana (w ujęciu abstrakcyjnym), to i tak nierzadko zdarza się zapomnieć i ciągiem dokonać zbyt wielu zmian jak na jedno pchnięcie. Jak się później okaże, że część zmian była nietrafiona, to zamiast po prostu wycofać pojedynczy commit, trzeba ubrudzić sobie ręce (i to nie zawsze po sobie), nie mówiąc o tym, że przeglądanie zmian (i szukanie winnych)  jest później karkołomnym zadaniem. I tutaj git potrafi sobie poradzić: git add -i. To proste polecenie pozwala nam przejść w tryb interaktywnego oznaczania zmian jako gotowych do pojedynczego commitnięcia. W ten prosty sposób możemy podzielić dotychczasowe zmiany nie tylko na różne pliki, ale również zdecydować o commitnięciu pojedynczej zmiany w pliku!

Utworzenie nowego projektu? Bułka z masłem. Przy średnio-zaawansowanej konfiguracji wykorzystujemy narzędzie gitosis. Wystarczy w pliku konfiguracyjnym dodać wpis o grupie mającej dostęp do konkretnego projektu, np:

[group nasza-klasa]
writable = sledzik
members = zdzis krzys ptys

… do katalogu z kluczami wrzucić klucze publiczne wymienionych programistów i… już. Od tego momentu serwer będzie wiedział o istnieniu nowego projektu, do którego pełny dostęp mają wymienione osoby. Bardziej skomplikowane konfiguracje (np. z podziałem na ograniczony dostęp do pojedynczych gałęzi) też nie wymaga wygórowanych zdolności i jest dość łatwo dostępne.

O możliwościach Gita można pisać i pisać, czego dowodem choćby wspaniały przewodnik autorstwa społeczności, czy linkowane przeze mnie rozdziały Pro Git. Warto poświęcić tych kilka chwil, żeby którąś z tych lektur poznać od deski do deski. Taka wiedza nie zmarnuje się, wręcz przeciwnie – może tylko przyczynić się do zwiększenia produktywności, usprawnienia porządku w projektach, czy zmiany podejścia niepoprawnych bałaganiarzy.

  1. bo innych i tak nie ma []
  2. jeszcze masa innych grzechów skutecznie zasila konto klepaczy, ale nie o nich dzisiaj []
  3. origin to zwyczajowa nazwa serwera głównego, może być marysia, dev, czy co tam sobei wymyślimy []
  4. o pomijaniu branchy żal wspominać []

Written by yanoo

May 7th, 2010 at 10:43 pm

Fallout po rusku, czyli zwiedzamy metro. Metro 2033.

with 2 comments

Po szkolnych lekturach (Mistrz i Małgorzata oraz Zbrodnia i kara) nie sądziłem, że jeszcze jakąś rosyjskiego autorstwa przeczytam, a tu niespodziewajka. O książce usłyszałem za sprawą gry na jej podstawie, gdzie w zapowiedziach rozpoznałem znajomy mroczny klimat post-apokaliptycznego świata, którego miłośnikom Fallout’ów, Mad Maxa, czy Stalkera przytaczać nie trzeba.

Oszczędźmy sobie jednak genezę rosyjskiego bestsellera1, a przejdźmy do rzeczy. Jeśli za miarę jakości lektury przyjąć “siłę wciągania”, to Metro 2033 w pełni zasługuje na wysokie noty; Dmitry Glukhovsky zgrabnie przeprowadza czytelnika przez kolejne tunele moskiewskiego metra, roztaczając wokół czytelnika mroczną atmosferę życia pod powierzchnią ziemi, wśród popaprańców wszelkiej maści: od zwykłych szaleńców zaczynając, przez neo-faszystów po kanibali i mutantów. Całość podana jest w smacznym sosie własnym odpowiadającym za fabułę – w zasadzie prostą, ale przyjemną, dynamiczną i pozbawioną jakichkolwiek nudnych przestojów.

Żeby jednak nie było za słodko należy się zjeba Wydawnictwu Insignis. Po pierwsze primo – literówki. Nie wiem, czy to wina pośpiechu, czy grubości (590 stron) lektury, czy może korekta sprawdzała tłumaczenie nad flaszką zza wschodniej granicy. Faktem jednak jest, że literówek jest od groma i ich ilość znacznie przekracza kryterium przyzwoitości. Drugi babol to litery na okładce – teoretycznie ładnie wypukłe i odblaskowe, w praktyce pod wpływem ciepła… rozpływają się zostawiając na dłoni srebrny proszek. Miało być efektownie, wyszło jak zawsze. Jedynie mały plusik należy się za wkładkę z planem metra. Szkoda jedynie, że plan jest wszyty w książkę i nie można go wyciągnąć bez szkody dla cegłówki.

Cóż. Pozostaje mi zachęcić do lektury – czyta się szybko i przyjemnie. Mnie pozostaje czekać na polskie wydanie Metro 2034 – może tym razem lepszej jakości.

  1. wystarczy poczytać np. wikipedię []

Written by yanoo

May 5th, 2010 at 8:56 pm

Posted in książkowo

Tagged with

Oprawca edukuje

without comments

Kevina Mitnicka chyba nikomu przedstawiać nie trzeba. Najsłynniejszy “komputerowy włamywacz świata” po wyjściu na wolność postanowił przejść na jasną stronę mocy i zamiast włamywać edukuje jak się przed włamaniami bronić.

I na tym w zasadzie można by skończyć przedstawienie książki “Sztuka podstępu. Łamałem ludzi, a nie hasła” Do lektury zachęciło mnie streszczenie przez znajomego części anegdot zawartych w książce, przedstawiających sposoby włamania. Trzeba przyznać, że przy wielu z nich można się za głowę złapać – z jednej strony takie to banalne, ze aż korci, by zabawić się w ten sposób cudzym kosztem, a z drugiej… wciąż nie można się nadziwić jacy ludzie są naiwni, delikatnie mówiąc. Ano właśnie – to nie jest “szkoła hackingu”. Bodaj w jednym akapicie autor przedstawia fragment komendy wpisywanej w terminal (i to też nie jakiejś wyszukanej), tak to mamy do czynienia tylko i wyłącznie z wpływaniem na ludzi – jak ich namówić do podania hasła, zrobienia tego, czy owego. Bo i o tym jest ta książka – o socjotechnikach.

Przeciętny, zorientowany człowiek z branży IT raczej nie powinien się dziś na te numery nabrać1 (choć jest w książce parę wyszukanych i naprawdę trudnych do wykrycia) i pozycja ta będzie go raczej nudzić – na jedną stronę historyjki przypada kolejne pięć moralizowania i rozkładania na czynniki pierwsze. Nuda.

Z drugiej strony… ci wszyscy, którzy wkleili na n-k łańcuszek usuwający śledzika powinni tę lekturę przeczytać i to ze dwa razy najlepiej. A potem jeszcze zdać z tego materiału jakiś egzamin.

  1. chciałbym w to wierzyć []

Written by yanoo

April 19th, 2010 at 8:30 pm

O postanowieniach, czasie, motywacji i psychozie

with 3 comments

Zachciało mi się w tym roku wymusić na sobie regularne czytanie. Jedna książka miesięcznie zagrzmiał wyrok w mojej głowie1.

Jak na razie idzie mi kiepsko – marzec się kończy, czyli – jak łatwo policzyć – powinienem być już co najmniej pod koniec trzeciej lektury, a kończę dopiero drugą2. Pomyślałem, że może publiczne samobiczowanie wpłynie motywująco, ale nie na tym chciałem się dziś skupić.

Dla utrzymania porządku obrad telegraficzny skrót pozycji tegorocznych: Świat według Clarksona oraz Boże inwazje. Życie Philipa K. Dicka.

Clarkson zebrał w zgrabny tomik felietony z bodaj trzech lat – zgrabne, lekkie, rzadko odkrywcze, częściej zabawne, ale ogólnie bez rewelacji.

Dick to natomiast nieźle pokręcona postać, którą należy znać dzięki takim powieściom jak Ubik, czy Człowiek z wysokiego zamku3, że o licznych adaptacjach filmowych nie wspomnę (ze słynnym Blade Runnerem na czele). Jak łatwo się domyślić – biografia zainteresuje raczej tylko miłośników prozy Philipa Dicka; dla nich samych oferuje sporą dawkę informacji, anegdot i cytatów z życia pisarza. Niebanalna i miejscami przerażająca4 historia “jedynego artysty wśród pisarzy SF”5.

Pewnie dawno już skończyłbym drugą pozycję, a może i kończył trzecią, gdyby nie chroniczny brak czasu, który jeszcze został ograniczony serialami i nową zabawką, ale nie ma co płakać nad rozlanym mlekiem, tylko czas zakasać rękawy6.

Także tego. Do przeczytania7.

  1. jeśli jesteś w trakcie programu debilizacji przez tzw. oświatę, to zapewne łapiesz się za głowę []
  2. za to w ekstremalnym tempie rośnie mi kategoria to-read []
  3. i wielu innych []
  4. Dick pochłaniał amfę na kilogramy []
  5. konkurs – kto to powiedział? []
  6. w zasadzie tu miała być nota moralizatorska o pilnowaniu priorytetów i takie tam, ale… who cares []
  7. tym samym chciałem zapoczątkować mini-serię recenzji []

Written by yanoo

March 27th, 2010 at 10:13 pm

Migoł, czyli słów kilka o zabawce za dwa klocki

with 3 comments

Po miesiącu zabawy z nową zabawką postanowiłem naskrobać parę zdań na temat swoich wrażeń. W sieci aż roi się od recenzji, również dla tych, którzy nie lubią czytać, co więc w takim razie można jeszcze dodać? Chyba spróbować odpowiedzieć na pytanie: czy warto?

N900 nie da się jednoznacznie ocenić. Podobnie jak w przypadku iPhone’ów, tak i w stosunku do produktu Nokii można z miejsca zostać fanbojem fanatykiem, bądź haterem. Ci pierwsi zachwycają się tym, co tak głośno przewija się w recenzjach: moc urządzenia, multitasking, jakość wykonania, wolność dla developerów (znacznie większa niż w przypadku Androida). Ci drudzy wyliczają wady: rozmiary (ciężki grubas), brak softu (nawet przy dodaniu dodatkowych repozytoriów nie ma co porównywać z Android Marketem, o Apple Store nie wspominając), cena, niedostępność u polskich operatorów, brak multitouch oraz brak standardowo niektórych funkcjonalności (mms, obsługa kodów pre-paidów). Jakby tego było mało, N900 nie jest kompatybilna m.in. z Nokia Ovi Suite, softem do zgrabnej komunikacji telefonu tabletu z komputerem.

Oliwy do ognia dolewa wiadomość o powstaniu (Moblin + Maemo 6 = ) MeeGo,  który ma zastąpić Maemo 5, przy jednoczesnym braku zdecydowania ze strony Nokii – wspierać meego na N900, czy nie wspierać. Wielu dzisiejszych użytkowników obawia się, że kupili maszynkę, która za pół roku “straci ważność”. Oczywiście – jest to bzdurne podejście, nawet bez oficjalnego wsparcia meego na N900 ruszy – to po pierwsze. Po drugie, soft stworzony pod MeeGo ma działać na Maemo 5. Wszystko zostaje w rodzinie.

Nie zmienia to jednak faktu, że niesmak i obawy psują atmosferę wokół marki i ewentualnych nowych użytkowników odstraszają.

Tekst się jednak rozrósł, a odpowiedzi na postawione wyżej pytanie wciąż brak. Wad wymieniłem sporo i pewnie już na dobre odstraszyłem ewentualnych nabywców :)

Wypadałoby więc odpowiedzieć sobie, dlaczego jednak jestem z zakupu zadowolony? Spore znaczenie ma tu z pewnością fakt, że nie należę do tzw. przeciętnych użytkowników. Kupiłem N900 nie tylko po to, żeby szpanować w otoczeniu (od tego jest iPhone), ale żeby mieć fun. Geekowy fun. Przeciętny użytkownik nie będzie jarał się odpaleniem na telefonie tablecie conky, vima, pythona, ruby’ego, czy dowolnej debianowej paczki.

Jeśli nie wiesz o czym mówię, Drogi Czytelniku, ten telefon tablet nie jest dla Ciebie. N900 to naprawdę mocna maszynka sama w sobie, ale to za słaby argument, by wyłożyć 2-2,5 tys. zł. Jeśli chcesz fajny telefon kup jakiegoś Androida (np. wspominanego już kiedyś przeze mnie Motorolę Droid), albo iPhone’a. Zapłacisz mniej, a radości i pożytku będzie więcej.

Przynajmniej do czasu, kiedy nie ustabilizuje się sprawa softu wokół N900, a Ovi Store nie zaroi od dobrych pozycji. Jeden Bounce Evolution to za mało. Google się udało, wierzę, że w tym przypadku będzie podobnie, potrzeba jednak na to trochę czasu.

Ci jednak, którzy prezentują podobne do mnie podejście, będą się jarać nową zabawką jak dzieci :) A kiedy znudzi się już Bounce, ScummVM, przełączanie rodzicom kanału w TV, czy akurat nie będzie niczego ciekawego do obejrzenia za pomocą mplayera, zawsze będzie można odpalić swój ulubiony edytor, wybrać między GTK, a QT i popracować nad własną aplikacją.

Written by yanoo

March 13th, 2010 at 11:24 pm