Technologie i narzędzia: język PHP 5, Java, JavaScript, Python, system Zend Framework, Django, biblioteka jQuery, Smarty, platforma Eclipse, MySQL, SVN, CVS, UML, Firefox.
WebProgramming - wszystko o serwisach internetowych
O serwisach internetowych.
[php] Operacje na napisach (string) i ich wydajność (krótka historia)
Od dawna zastanawiałem się, czy operacje na napisach są kosztowne (pamięciowo i/lub obliczeniowo)? W językach typu Java, C# spotykamy specjalną klasą typu StringBuilder, która jest zalecanym sposobem tworzenia napisów (jest optymalną wersją “zwykłych” napisów - optymalną pod względem wykonywania operacji na nich). W przypadku języka PHP takiej klasy nie posiadamy - istnieje tylko prosta zwykła konkatenacja.
[php|zend] Nowa biblioteka dla plików CSV (wersja 0.96)
Przyszedł czas na dojrzalszą wersję znanej już Wam biblioteki obsługującej pliki CSV (Fasic_Csv). Dojrzewając pozbyła się kilku błędów i niedoskonałości oraz uzyskała nowe ciekawe funkcjonalności (przyznam się że trochę jej w tym pomogłem).
Przykład użycia biblioteki Fasic CSV (wraz z nowymi funkcjonalnościami):
-
// Pobierz plik CSV
-
// nazwa pliku, załaduj cały plik, rozpoznaj automatycznie separator
-
$file = new Fasic_Csv(‘1.csv’, true, true);
-
// Zmień kodowanie, plik jest w kodowaniu UTF-8 natomiast my chcemy ISO
-
$file->setEncoding(‘UTF-8′, ‘ISO-8859-2′);
-
// Ustaw mapowanie dla obiektów
-
// nazwa_pola => ['numer_kolumny:typ_danych' | 'funkcja anonimowa']
-
‘price’ => ‘2:round2′,
-
));
-
// Pobierz 3 linie (nie zwiększając wskaźnika), linie liczone są od 0
-
$line = $file->line(2);
-
// Stwórz obiekt na podstawie wcześniej zdefiniowanego mapowania
-
$obj = $line->asObject();
-
// Dla linii: "Nazwa Produktu;nieuzywana kolumna;13.008"
-
// Wyświetli: "stdClass Object ([price] => 13.01 [name] => ‘nazwa produktu’)"
[php|zend] Biblioteka obsługi plików CSV - przykład.
Ponad dwa miesiące temu (ale ten czas leci…) przedstawiłem Wam propozycję klasy ułatwiającą pracę z plikami CSV - obiecałem wówczas, iż przedstawię bardziej zaawansowany przykład jej wykorzystania. Dotrzymuje więc obietnicy ;).
Przypomnę, iż poprzednio zaprezentowałem ogólne możliwości biblioteki Fasic_Csv, które między innymi skupiały się na:
- pobraniu następnej (lub dowolnie wybranej) linii z pliku CSV w postaci napisu oraz tablicy komórek
- pobraniu wybranej komórki, dla której można było określać jej typ (patrz biblioteka
Fasic_Forcetype)
[php] Jaki kierunek język PHP powinien obrać?
Do największych bolączek programistów PHP (moim zdaniem) do tej pory można było zaliczyć:
- Niezgodność nazw funkcji, mało spójne API.
- Brak oficjalnego frameworka.
- Wydajność aplikacji.
Czy coś się zmieniło? Postanowiłem przeanalizować aktualną sytuację w ramach w/w punktów
[php] Nielogiczne instrukcje.
Z przykrością trzeba przyznać, iż zdarzają się “miejsca” w których język PHP nie jest ani logiczny, ani konsekwentny w swoich założeniach. Oto moja lista “zażaleń”.
[eclipse|php] Tworzenie szablonów.
Zapewne nikt nie lubi robić nudnych, często powtarzających się czynności. Do nich niewątpliwie można zaliczyć (i to niezależnie od wykorzystywanego frameworka i języka) tworzenie klas odpowiedzialnych za konkretną rzecz (np klasy modeli, widoku, itp).
Całe szczęście Eclipse (a dokładniej PDT 1.0.3) dostarcza nam mechanizmu szablonów (ang. Templates), które umożliwiają stworzenie szkieletu danej klasy w kilka kliknięć.
[php|zend] Przykłady dla biblioteki Fasic_Mail + nowa wersja biblioteki.
Dwa miesiące temu przedstawiłem system szablonów e-maili oraz najprostszy przykład jego użycia. Tym razem chciałbym podać bardziej zaawansowane przykłady (niektóre z nich były już wspomniane) wraz z kodem źródłowym, w tym: obsługa wielu managerów, wielojęzyczność, treść e-maili w formacie HTML i obsługa załączników.
[php|zend] Szablony emaili.
Biblioteka wysyłania e-maili w systemie Zend Framework jest bardzo fajnie zaprojektowana i zaimplementowana (patrz Zend_Mail). Niestety brakowało mi w niej obsługi szablonów, które spełniałyby następujące kryteria:
- Treść e-maila jest poza kodem PHP (patrz też pkt 3)
- Sparametryzowanie e-maili, czyli możliwość wysyłania tych samych e-maili różniących się tylko niektórymi wartościami (np e-mail aktywacyjny może różnić się tylko adresem aktywacyjnym)
- Wybór między źródłem treści szablonów (na przykład pliki xml, baza danych)
- Możliwość ustawiania domyślnych wartości dla pól takich jak: temat, adresat, załączniki.
Tak bardzo mi tego brakowało, iż postanowiłem tą ideę przelać na kod.. oto wynik.
[php] Prosta obsługa stronicowania - część 2.
Przyszedł czas na pozostałą część aplikacji, czyli kontroler i widok. Przypomnę tylko, iż ten artykuł przedstawia ciąg dalszy idei, którą przedstawiłem w artykule “[php] Prosta obsługa stronicowania - część 1” (łatwo się zresztą domyślić) - proponuję więc zapoznanie się najpierw z pierwszą częścią, jeżeli wcześniej tego nie uczyniłeś.
[php] Prosta obsługa stronicowania - część 1.
W artykule “[sql] Trik w MySQL” przedstawiłem sposób na obsługę stronicowania w SQL. Teraz chciałbym przedstawić pozostałe części aplikacji - czyli Model, Controller i View - które z tego korzystają. W tej części opisze sam model, w części drugiej skupie się na kontrolerze i widoku.