Month: June 2015

Git przypadki użycia – refactoring w trakcie pisania kodu

Posted on Updated on

  1. Refactoryzowałem przeniesienie logiki w inne miejsce. Zmieniły się zależności jakie pobieraja serwisy => trzeba dostosować Unit Testy (MyServiceTests). Zmiany w UT polegaja jedynie na dodaniu dodatkowego parametru jaki wstrzykujemy do testowanego serwisu – zmiana w jednej klasie ale w kilku testach.
  2. Zauważyłem, że nasze testy powinny korzystać z SUT Factory (System Under Test) – tworzenie testowanego serwisu powinno być tylko w jednym miejscu aby ewentualne zmiany w zależnościach (konstruktor) tego serwisu wymagały tylko jednej zmiany.
  3. – commituje aktualnie zmieniony kod (aktualnie projekt się nie kompiluje), powiedzmy ze jednem na branchu “development”
    – przechodze na nowego brancha “sut-refactoring”, cofam sie “git reset –hard head^” o jeden commit do stanu sprzed refactoringu
    – wykonuje punkt 2) czyli refactoring do SUT, sprawdzam czy testy przechodza.
    – wracam “development”
    – pobieram jeden commit z poprzedniego brancha “git cherry-pick sut-refactoring”
    – zamieniam miejscami dwa ostatnie commity aby ten z sut-refactoring był wcześniej. “git rebase -i head^^” i zamieniam miejscami – konieczna znajomość rebase interactive
    – wprowadzam zmiany w teście MyServiceTests, teraz wystarczy tylko jedna zmiana w fabryce tworzacej testowany serwis (SUT Factory) – sprawdzam czy testy przechodza.
    – zmiany łaczace z ostatnim commitem (znowu znajomość rebase interactive)
  4. Implementuje metodę która była dotychczas stubem.
    private void HandleCopyButtonControl(FieldRenderingDefinition control)
    {
        // TODO: RQ-1234
    }
    

    Po zaimplmentowaniu okazało się, że miejsce z którego jest wołana metoda z bugiem i działało dotychczas tylko dlatego, że nasza metoda była pusta. Commitujemy. Zmieniamy tamto miejsce niezależnie (zamieniając ify na switcha), commitujemy. Zamieniamy commity miejscami.

Advertisements

git add wybrane ścieżki

Posted on

Problemem “konsolowca” w gicie jest to ze czasem trzeba dodać do nowego commita tylko wybrane pliki.
git add src/KMorcinek.MyApplication/MyApplication.Web/Infrastructure/Configuration/Configuration.cs

wklepywanie tego jest trochę uciążliwe nawet gdy od czasu do czasu wciśnie się Tabulator.

Rozwiązaniem jest:
git add *Test*
git add *.sql*
git add *somethingUniq*

Trzeba tylko znaleźć jakiś unikalny string który wyróżni plik(i) spośród wszystkich zmienionych plików.

Sql loguje informacje debugowe (np w procedurach)

Posted on

PRINT 'Procedure was here'

-- (...)

PRINT 'description: ' + @description

PRINT 'Trigger was fired'

Dzieki temu odpalając np INSERT mogę zobaczyć informacje debug z Triggera, który się odpalił.

PRINT in sql server

OAuth Authentication Sandbox

Posted on

Zabawy z autentykowanie, hashowaniem, protokołami nagłowkami, weryfikacjami nigdy nie są łatwe. Poniżej link do stronki która pozwala lepiej zrozumieć OAuth 1.0 i nawet przećwiczyć przeliczanie własnych przykładów (“Create Your Own”).

OAuth 1.0 Authentication Sandbox

GIT – Zasady przedkładania przedmiotów prawa autorskiego

Posted on Updated on

Jeśli aby mieć 50% kosztów uzyskania przychodu (skomplikowane podatki są pojebane BTW) firma wymaga przedkładania co się zrobiło, to mam taki trochę bruteforce sposób.

git log --author="krzysztof.morcinek" --date=local --since="2016-01-31" --pretty=format:"%H" > my_hashes.txt

Podmieniamy authora i since.

Na podstawie wygenerowanych hashy z poprzedniego kroku generuje sobie skrypt który utworzy mi patche.

        public void GeteratePatches(string path)
        {
            var lines = File.ReadAllLines(path);

            StringBuilder sb = new StringBuilder();

            foreach (var hash in lines)
            {
                sb.AppendLine("git format-patch -1 "+ hash);
            }

            File.WriteAllText(@"patches.cmd", sb.ToString());
        }

(Slaby sposób, ale przynajmniej zadziała wszędzie).

Wynikowy plik “patches.cmd” uruchamiam w katalogu z repozytorium.

Później zipuje wszystko i wysyłam.

Nazewnictwo

To niestety nie koniec biurokracji. Trzeba jeszcze po polsku nazwać to co się zrobiło i najlepiej używając słow wytrychów sugerujących żeby było to “dzieło”, takich jak „stworzenie/zaprojektowanie/napisanie [funkcjonalności/modułu/poprawek] dla projektu/systemu…”
Nazwy można może wyciągnąć z Jiry czy jiropobnego czegoś.

Problem z niektórymi commitami

Właśnie zauważyłem, że z “git log” trafiają mi się commity innych użytkowników. Pewnie chodzi o jakieś merge commit’y które za dużo wybierają. Trzeba to kiedyś sprawdzić do końca.

Wrocław różne

Posted on

Gdzie dziś będzie kontrola w mpk:
http://pasazer.mpk.wroc.pl/na-tych-liniach-spotkasz-dzisiaj-kontroler%C3%B3w
A ogólnie to kontrolera można rozpoznać bo jest ładniej ubrany (niebieski motyw).