W ostatnich dniach podjąłem się małego projektu, który dłuższy od jakiegoś czasu już chodził mi po głowie.
Celem było wygenerowanie mapy z zaznaczonymi wszystkimi ścieżkami jakie przemierzyłem rowerem mając włączony gps-tracker.
Do dyspozycji miałem mieszankę plików .gpx i .tcx wyeksportowanych z aplikacji Endomondo oraz Strava.
Rezultat prezentuje się jak na poniższym obrazku, a jak tego dokonałem, czytajcie poniżej.
Tag: php
Behat – wprowadzenie do testowania BDD
Czym jest Behat
Behat jest frameworkiem Behavior-driven development (w skrócie BDD) dla języka PHP, który pomaga w implementacji i testowaniu założeń biznesowych. Oficjalna dokumentacja Behata znajduje się na stronie https://docs.behat.org/.
Instalacja
Instalacja behata sprowadza się do zainstalowania paczki przy użyciu composera:
composer require --dev behat/behat
Inicjacja
Następnie należy zainicjować behata, poleceniem:
$ vendor/bin/behat --init
Polecenie to stworzy katalog features i wypisze informacje na temat jego zawartości:
+d features - place your *.feature files here +d features/bootstrap - place your context classes here +f features/bootstrap/FeatureContext.php - place your definitions, transformations and hooks here
Podstawymi elementami Behata są pliki .feature oraz klasy kontekstu, powyższy rezultat pokazuje gdzie należy umieścić każde z nich.
Pliki .feature
Plik .feature jest to plik w formacie zwanym Gherkin lub Cucumber, opisujący dane rozwiązanie. Format opisu scenariuszy powinien być zrozumiały dla osób nietechnicznych. Na początku zawsze znajduje się opis danego rozwiązania, np.:
Feature: In order to buy products as a customer I have to put products into my basket and have enough money to pay for them.
PHPUnit – testowanie aplikacji używającej zewnętrznego API
Załóżmy że mamy napisaną lub dopiero piszemy aplikację w PHP, która używa zewnętrznego API i z zwraca dane poprzez swoje własne API, czyli jest pośrednikiem.
Chcemy napisać testy naszych endpointów tak, żeby nie wykonywać zapytań do zewnętrznego API w czasie testów.
Jeden z naszych endpointów zwraca informacje o produkcie, jego adres to GET /product/{id}.
Nasz test mógłby wyglądać tak:
public function test_it_should_return_product() { $response = $this->get('/products/' . $this->faker->randomNumber()); $response->assertStatus(200); $response->assertJsonStructure([ "id", "name", "price" ]); }
W naszym kontrolerze używamy interfejsu ProductInterface który jest implementowany przez klasę ProductRepository, a ta z kolei używa klasy ProductProxy do wykonania zapytania do API. Klasas ProductProxy dziedziczy ogólną klasę BaseProxy, która zawiera metodę sendRequest(), to właśnie ta metoda odpowiada za wszelkie requesty HTTP do zewnętrznego API. Na początek więc zróbmy mock tej metody, aby upewnić się, że żaden z naszych testów nie wykona prawdziwego zapytania do zewnętrznego API.
Jak zostać programistą
Opowiem wam jak się zostaje programistą, opierając się na doświadczeniach własnych oraz innych programistów, których znam i z którymi miałem okazję pracować.
Wybór języka programowania
Na samym początku, kiedy jeszcze mało wiesz i mało umiesz, trudno jest podejmować decyzje, które określą ścieżkę naszej zawodowej kariery. Na początek dobrze jest spróbować napisać “Hello World” w kilku różnych językach programowania. Kiedy już poczujesz, że któryś z nich pasuje ci bardziej, spróbuj napisać coś trudniejszego, np. program który oblicza odległość między dwoma punktami na płaszczyźnie. W tym momencie jeszcze nie zamykaj się na inne języki, może się bowiem okazać, że ten język, który na początku wydawał się najprostszy, staje się dużo trudniejszy kiedy trzeba napisać coś trudniejszego. Próbuj robić rzeczy na wiele sposobów. (więcej…)