Ubuntu 12.04: Instalacja PHP 5.4 i 5.5, Apache 2.4 i PHPMyAdmin na dokładkę.

Witam wszystkich. Dzisiejszy wpis to suma pomysłów na co najmniej trzy artykuły, które przeleżały gdzieś z tyłu głowy przez ostatnie 2 miesiące. Nadal pracuję nad projektami o których wspominałem w poprzednich wpisach, cały czas rozbudowując, optymalizując i stając na głowie, żeby wszystko działało jak najlepiej. W końcu mam możliwość technologicznie spełnić się opracowując różne rozwiązania, które autentycznie są używane, a nie tylko chowane do szuflady, czy też jak to się modnie mówi “do portfolio”. :)

 

PHP, Doctrine2: Segfault podczas operacji flush().

Pracuję od jakiegoś czasu nad projektami, w których istotną część stanowią (autorskie) konsolowe narzędzia do zarządzania wewnętrznymi procesami aplikacji. Aktualizacja danych, wysyłka maili, itp. - każdej operacji odpowiada polecenie i odpowiedni zestaw argumentów, dzięki czemu zamiast pisania kodu w pocie czoła mogę ograniczyć się jedynie do sprawdzenia pliku logu. Nie znaczy to, że jestem “bezrobotny”, ale przynajmniej mam dużo czasu na “kreatywną” część programowania, zamiast tej odtwórczej. Wszystko fajne, dopóki działa - ostatnio jedno z poleceń zaczęło ni stąd ni zowąd wyrzucać błędy, i to BłędyNieByleJakie™. Zapraszam do lektury artykułu.

PHP: Nie, to jeszcze nie koniec, a długa droga przed nami...

Jakiś czas temu pojawił się w Internecie kolejny rant na PHP. Zdziwiony specjalnie nie jestem, ale jednostronne ujęcie tematu w tamtym artykule wydało mi się tak kruche, a rant tak słaby, że aż postanowiłem wstawić link na swój profil na Facebooku. Zacząłem pisać komentarz, rozszerzać go o kolejne wątki, aż powstało kilka akapitów tekstu. Stwierdziłem, że w takim wypadku, że lepiej będzie wstawić całość na fanpage Blogu::Programisty, gdzie po kilku drobnych zmianach trafia pośrednio za pomocą niniejszego wpisu.

Doctrine2: Błąd "Unknown database type enum requested, MySqlPlatform may not support it".

Jakiś czas temu chciałem poeksperymentować trochę z bazą danych jednego z projektów FLOSS w Symfony2.

PHP, RegExp: Usuwanie znaków specjalnych ze stringów.

Wracamy na poważnie. :) Jakiś czas temu miałem problem z usuwaniem “niewidzialnych znaków” ze stringa w PHP. Mam na myśli oczywiście wszystkie te, które normalnie zapisujemy jako “slash-coś” - \n, \r, \t i tak dalej. W dzisiejszym wpisie pokażę Wam jak sobie z tym poradzić w chyba najbardziej elegancki do tej pory sposób.

PHPUnit: Ignorowanie pojedynczych testów.

Witajcie! Już dawno nie pisałem na blogu, ale o tym później (nie dzisiaj :)). Ostatnio jestem strasznie zarzucony pracą i staram się robić wszystko tak szybko, jak to tylko możliwe, ale na pierwszym miejscu stawiam raczej “porządne” wykonanie poszczególnych elementów, bo “kto szybko robi, ten dwa razy robi”. Pisząc testy jednostkowe do jednej z bibliotek pomocniczych trafiłem na problem z ignorowaniem pojedynczych testów w poszczególnych zestawach. Dzisiaj chciałbym Wam pokazać, jak sobie z tym poradzić.

Doctrine: Operator INDEX BY - indeksowanie wyników zapytania według wybranego pola.

Pobieranie informacji z baz(y) danych to jedna z podstawowych czynności, jaką wykonujemy podczas tworzenia różnego rodzaju stron internetowych. Aby uzyskać potrzebne dane w zdecydowanej większości przypadków wystarczy proste zapytanie SQL [w przypadku Doctrine możemy też wykorzystać język DQL]. Niektóre przypadki wymagają jednak potrzeba bardziej ambitnej ekwilibrystyki, aby przygotować odpowiedni zbiór rekordów. W dzisiejszym wpisie chciałbym pokazać jedną z możliwości biblioteki Doctrine - indeksowanie wyników zapytania według samodzielnie wybranego pola.

PHP: Sprawdzanie rozdzielczości pliku graficznego.

Kilka dni temu trafiłem na pytanie o pomoc w przeskalowaniu obrazka do uploadu na pewnej stronie internetowej. Pomyślałem sobie: “kurczę, znowu ktoś nie umie takich podstawowych rzeczy”, aczkolwiek w opisanych wymaganiach znalazły się nie tylko informacje na temat docelowego rozmiaru, ale także rozdzielczości. Nauczony doświadczeniem zasugerowałem, żeby ten ostatni parametr zostawić w spokoju, ponieważ “i tak go nie sprawdzą”. W odpowiedzi dostałem jednak informację, że właśnie dlatego próby samodzielnej zmiany wymiarów nie przechodzą walidacji formularza. Stwierdziłem, że warto będzie zobaczyć, w jaki sposób można sprawdzić taki parametr na własną rękę.

PHP: Dzielenie stringa według separatora z wyłączeniem znaku ucieczki.

Szukałem ostatnio szybkiego sposobu na podzielenie stringa według jednoznakowego separatora, aczkolwiek w taki sposób, by omijał jego “escape’owaną” formę. W ten sposób mógłbym np. parsować pewne dane tekstowe równocześnie umożliwiając wykorzystanie separatora w samym tekście. Zadanie teoretycznie nie wydawało się trudne, aczkolwiek faktyczne rozwiązanie okazało się co najmniej “nietrywialne”. W dzisiejszym bardzo krótkim i treściwym wpisie chciałbym podzielić się z Wami znalezionym przeze mnie rozwiązaniem.

Doctrine: Funkcje SQL w zapytaniach do bazy danych.

Od kiedy programiści stron internetowych [i nie tylko] dostali w swoje ręce pierwsze biblioteki wspomagające technikę ORM - mapowania obiektowo-relacyjnego, stało się jasne, że w bardzo wielu przypadkach oszczędzą nam one samodzielnego pisania zapytań SQL i związanych z tym problemów i błędów. Za bardzo przyjemną abstrakcją tychże bibliotek kryje się jednak jeden problem - ze względu na fakt, iż próbuje ona zastąpić nam całkowicie leżącą niżej warstwę bazy danych, bardzo często nie mamy możliwości skorzystania z natywnych funkcji SQLa. W niniejszym wpisie pokażę, jak sobie z tym poradzić wykorzystując bibliotekę ORM Doctrine.