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.

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).