Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: Michał Janicki, dodany: 09.01.2016 18:07, tagi: php

Wersjonowanie bazy danych prostym tematem nie jest. Nie dla wszystkich. I o ile wersjonowanie „zwykłych” plików tekstowych zawierających kod jest sprawą jasną i prostą to jak zachowywać różne wersje czasami bardzo skomplikowanych schematów baz danych? Czy wersjonować samą tylko strukturę czy także dane? I wreszcie jak aktualizować bazę na „produkcji” – wszak wykonywanie aktualizacji „ręcznie” jest obarczone wysokim prawdopodobieństwem popełnienia zwykłego ludzkiego błędu. 

Co robić? Jak żyć?

Temat wersjonowania wydaje się na tyle skomplikowany, że wiele osób nie podejmuje nawet próby wyszukania narzędzia, które ułatwiło by zadanie. A nie trzeba zbyt długo i głęboko szukać. Znalezienie takiego rozwiązania jak framework Ruckusing nie powinno zająć więcej niż 10 minut. Idea tego narzędzia została zapożyczona (a jakże!) z systemu migracji wbudowanego w Ruby on Rails.

Jak to działa?

Ruckusing przechowuje kolejne aktualizacje bazy w klasach PHP, które zawierają kod wprowadzający zmiany w bazie. Każdy plik generowany jest za pomocą odpowiedniego polecenia w CLI. Nazwa każdego pliku jest poprzedzona datą i czasem, w którym został wygenerowany co utrudnia przypadkowe stworzenie dwóch plików o tej samej nazwie. Po wypełnieniu klasy kodem opisującym naszą aktualizację wracamy na chwilę do CLI – wydajemy polecenie odpowiadające za wprowadzenie zmian i już mamy zaktualizowaną bazę danych. Za pomocą jednego polecenia wprowadzone do bazy mamy nawet bardzo skomplikowane aktualizacje. Informacje o tym jakie zmiany zostały już wprowadzone do bazy przechowywane są w tabeli db_schema w postaci kolejnych rekordów zawierających przedrostek nazw plików (ten z datą i czasem).

Jak dodać do Ruckusing projektu?

Konfiguracja jest bardzo prosta i sprowadza się w zasadzie do dodania nowej zależności dla Composera:

ruckusing/ruckusing-migrations

Następnie wpisujemy composer update i już mamy zainstalowany framework.

Jak skonfigurować?

W katalogu głównym frameworku znajduje się katalog config a w nim z kolei szablon pliku konfiguracyjnego (database.inc.php). Plik ten należy skopiować do głównego katalogu biblioteki i zmienić jego nazwę na ruckusing.conf.php.  Sama biblioteka obsługuje bazy MySql, PostgresSql i SqlLite. Tak więc gdy otworzymy plik ruckusing.conf.php zobaczymy w nim tablice asocjacyjną z przykładowymi szablonami konfiguracji dla każdej z typów baz. Każda z przykładowych konfiguracji zapisana jest w odpowiednim kluczu (np. development). Jest to nazwa środowiska w jakim działa baza danych. Możemy tworzyć rzecz jasna własne środowiska poprzez dodawanie nowych kluczy i w jednym pliku przechowywać różne konfiguracje dla różnych środowisk.

Jeśli chodzi natomiast o konfiguracje samego połączenia z bazą to zapewne będziecie wiedzieć jak uzupełnić wszystkie dane poza directory. Ten parametr odpowiada za nazwę katalogu, w którym będą przechowywane pliki opisujące zmiany w bazie danych. Istotne jest aby w naszym środowisku developerski i w środowisku produkcyjnym ten katalog miał tą samą nazwę dzięki czemu gdy będziemy pobierać, commitować zmiany i później pobierać do wersji produkcyjnej wszystko będzie w jednym katalogu i będzie można łatwo wprowadzić zmiany na „produkcji”.

Ostatnią zmianą jaką należy wprowadzić w pliku konfiguracyjnym jest usunięcie fragmentu kodu („. ‘..’ ”) znajdującego się na samym końcu linii.

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: batman, dodany: 05.01.2016 19:52, tagi: php

Stare powiedzenie mówi – „potrzeba matką wynalazku”. Tak się złożyło, iż idealnie pasuje ono do historii powstania najnowszej paczki do Laravela mojego autorstwa. Podczas pracy nad ostatnim projektem zauważyłem, że większość tworzonego kodu powstawała przy użyciu metody Copy’ego-Paste’a. Praca taka nie dość, że jest nudna, to dodatkowo pochłania sporo czasu (modyfikacja nazw klas, nazwy widoków, walidatory, itd.). Szybkie wyszukiwanie w serwisie packagist.org zaowocowało kilkoma paczkami oferującymi funkcjonalność generatora crud. Niestety żadna z nich nie... [[ This is a content summary only. Visit my website for full links, other content, and more! ]]

Autor wpisu: zleek, dodany: 05.01.2016 14:04, tagi: css

Usually we use quite plain structure of content on the website. Sometimes we have to point out some paragraphs on the website. If the structure is not complicated we can use unordered lists ul or ordered lists ol. Let’s think

Autor wpisu: Michał Janicki, dodany: 30.12.2015 21:47, tagi: php

3 grudnia tego roku miało miejsce ważne wydarzenie dla ludzi skupionych wokół PHP – premiera wersji 7 tego języka. Przynosi ona przede wszystkim wiele usprawnień (np. duża ilość Fatal Errorów została zamieniona na wyjątki) i poprawek (które zaowocowały m. in bardzo dużym skokiem wydajności). Pojawiło się także kilka nowości

(np. obsługa klas anonimowych) jednak z reguły nie jest to nic czego nie było by wcześniej w innych językach. Wreszcie wraz z pojawieniem się tej wersji PHP ma szansę nawiązać równorzędną walkę z innymi językami.

Zanim jednak zaczniemy pisać kod aplikacje zgodne z najnowszą wersją PHP minie trochę czasu. Wszystko dlatego, że większość pracy programisty to utrzymywanie już istniejących aplikacji pracujących pod kontrolą np. PHP 5.3. Problem w tym, że przełożeni rzadko kiedy widzą potrzebę aktualizacji PHP do nowszej wersji – no bo po co? Przecież wszystko działa a klienci nie zapłacą za ewentualne modyfikacje kodu aby był zgodny z nowszą wersją PHP ponieważ nie przełoży się to na konkretną funkcjonalność. Istnieje znacznie większe prawdopodobieństwo, że napiszecie w najbliższym czasie coś w PHP 5.6 niż w 7.0 dlatego właśnie w tym poście opiszę nowy operator jaki pojawił się właśnie w PHP 5.6.

Teraz już tylko o nowym operatorze

Nowy operator służy do potęgowania. Czyli można by było uznać, że jest to skrót do funkcji pow(). Otóż nie do końca. Jeśli potęgujemy liczby dodatnie w przypadku operatora ** i funkcji pow() wydaje się identycznie. Przykład poniżej:

var_dump(2 ** 2);
var_dump(pow(2, 2));

var_dump(2 ** 2 ** 2);
var_dump(pow(2, 2) * pow(2, 2));

var_dump(2.15 ** 3);
var_dump(pow(2.15, 3));

var_dump(2 ** 3.5);
var_dump(pow(2, 3.5));

var_dump(2 ** -3);
var_dump(pow(2, -3));

pojawiają się w przypadku gdy podstawą jest liczba ujemna. Przykład poniżej:

var_dump(-2 ** 2);
var_dump(pow(-2, 2));

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: stormfly, dodany: 30.12.2015 13:32, tagi: php, framework

Kto nie spotkał się z opinią, że do prostej strony framework nie jest potrzebny i czysty php wystarczy – zostawia komentarz ;) Tytułowe pytanie można odwrócić, co nam przeszkadza podłączenie frameworka? Spróbujmy zebrać odpowiedzi jakie padają: 1) niepotrzebne dziesiątki/setki...

Autor wpisu: zleek, dodany: 22.12.2015 10:10, tagi: php, sql

Database queries usually are quite simple, but sometimes we have to build more complex queries. Let’s have an example We do have a search form where user can select one or many colours of product and one or many sizes.

Autor wpisu: batman, dodany: 21.12.2015 18:30, tagi: php

Wraz z pojawieniem się PHP7, dostaliśmy w nasze ręce szereg nowych narzędzi, z których najbardziej podobają mi się klasy anonimowe. Wprawdzie czytałem o praktycznych zastosowaniach tej funkcjonalności, jednak nie sądziłem, że tak szybko przyjdzie mi z nich korzystać. W moim przypadku klasa anonimowa okazała się wyjątkowo przydatna podczas rozszerzania klasy vendora, do której nie miałem dostępu. Wyglądało to tak, że w projekcie opartym o Laravela, jedna z paczek zaciągniętych przy pomocy composera, zwracała kolekcję obiektów. Dla moich potrzeb konieczne było dodanie przygotowanego wcześniej... [[ This is a content summary only. Visit my website for full links, other content, and more! ]]
Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.