PHP – operacje na ciągach znaków – zamiana liter na małe

komputerek_phpOperacje na ciągach znaków to jedne z popularniejszych zadań programistycznych  realizowanych w typowym projekcie serwisu internetowego tworzonego przy pomocy PhP. Jedną z popularnych operacji wykonywanych na ciągach znaków to konwersja na ciągi złożone jedynie z małych liter. Realizacja tego zadania jest raczej trywialna. Wystarczy, że użyjecie dostępną w PhP komputerek_mysqlfunkcję strtolower() lub w przypadku zamiany pierwszej litery lcfirst().

Zadanie robi się już nieco trudniejsze gdy przyjedzie Wam pracować z ciągami znaków wśród których znajdą się litery odpowiadające znakom diakretycznym charakterystycznym dla danego narodowego alfabetu. Użycie funkcji strtolower oraz lcfirst nie spowoduje że tego typu duże litery będą zamienione na małe. Znaki wykraczające poza zakres liter ‚alphabetic’ są pomijane przez te funkcję.

Czytaj dalej

Cache-Control w .htaccess, czyli jak polepszyć wynik w google PageSpeed Insight

komputerekOstatnio z ciekawości zajrzałem do aplikacji PageSpeed Insight (PSI). Wynik mojej strony o Krecie oscylował w okolicy 75 punktów dla tradycyjnych przeglądarek dla komputerów i 61 punktów dla urządzeń mobilnych. Postanowiłem przyjrzeć się jaki element miał największy wpływ na osiągnięty wyniki. Okazało się że największym czynnikiem wpływającym negatywnie na punktację było pominięcie ustawienia maksymalnego wieku (daty wygaśnięcia) dla większości statycznych zasobów wykorzystywanych na stronie. W moim przypadku obejmowało to wszystkie pliki graficzne, js i css. Postanowiłem przeszukać internet pod kątem znalezienia sposobu na dołączenia do nagłówków tych elementów odpowiedniej wartości max-age. Czytaj dalej

Text do PNG – czyli jak korzystać z GD2

komputerek_phpBiblioteka GD2 to jedno z ciekawszych narzędzi, które są dostępne w PHP znacznie poszerzając jego możliwości. Od dłuższego czasu biblioteka ta jest dostępna w ramach prawie każdego hostingu oferowanego na rynku. Warto więc zapoznać się z możliwościami GD2, gdyż jego znajomość pozwala na wykonywanie bardzo ciekawych operacji. Z bardziej popularnych można wymienić choćby takie, jak: skalowanie rozmiaru pliku graficznego, tworzenie zupełnie nowych obrazów, zmiana typu pliku, konwersja koloru do przeźroczystości, nakładanie napisów na zdjęcia, odczyt danych EXIF … i wiele, wiele innych.

Jednym z popularnych zadań jakie może realizować GD to konwersja tekstu do pliku graficznego. Poniżej znajdziecie przykładowy listing w którym przestawiam realizację takiej operacji. Oczywiście należy potraktować ten kod bardziej jako przykład możliwości niż samo rozwiązanie tego zagadnienia.
Czytaj dalej

Szybki eksport danych do CSV

komputerek_phpSą takie sytuacje, gdy użytkownik korzystający ze strony internetowej, chce pozyskać zawartość tabeli lub też raportu, celem dalszej pracy z danym (np: wykorzystania danych w celu wykonania tradycyjnej papierowej korespondencji seryjnej). Do niedawna wymagało to od programisty pełnego oprogramowania funkcji eksportujących dane do pliku. Od wersji PHP 5.1.0 jest to znacznie łatwiejsze gdyż udostępniono nowa funkcję fputcsv ($handle, $fields), której zadaniem jest “wpychanie” danych tablicy do plików CSV.

Czytaj dalej

Duża liczba użytkowników = krótki czas trwania sesji

komputerek_phpJednym z bardziej oczywistych sposobów na obsługę sytemu autoryzacji w PHP jest korzystanie ze zmiennych sesyjnych. Jest to w miarę proste i eleganckie rozwiązanie. Schody zaczynają się jednak w momencie, gdy liczba użytkowników rozbudowanego serwisu zwiększa się do tak dużej liczby, że dane utrzymywane w zmiennych sesyjnych będą zajmować maksymalne ilości pamięci zapisane w konfiguracji serwera. W takich sytuacjach długość trwania sesji ulegnie drastycznemu skróceniu a użytkownicy będą notorycznie wylogowywani z serwisu.

Wyczerpywanie limitu pamięci spowoduje, że zwiększanie wartości session.gc_maxlifetime w ini_set nie będzie dawało żadnych wymiernych korzyści. Garbage collection i tak notorycznie będzie niszczył najstarsze nieaktywne sesje. Ciągła rotacja powracających wylogowanych użytkowników będzie powodowała krótkie trwanie pozostałych sesji.
Czytaj dalej