Blog archives

53 posts in the archive

Skróty klawiszowe w NetBeans

NetBeans

Od 3 lat NetBeans jest moim głównym środowiskiem programistycznym. Natrafiłem na niego szukając alternatywy dla mułowatego Eclipse. Poza większą responsywnością okazło się, że w NB zaraz po instalacji wszystko działało tak jak tego oczekiwałem - nie musiałem marnować czasu na instalowanie potrzebnych (i usuwanie zbędnych) dodatków.

Dobrze jest znać swoje narzędzia pracy. Kluczową sprawą dla mojej wydajności podczas "klepania kodu" są skróty klawiszowe. Poza podstawowymi (typu Ctrl+X, Ctrl+V) warto było poznać inne, typowe dla NetBeans. Wyćwiczenie ich pozwala lepiej skupić się na pracy - po co rozpraszać uwagę błądząc po drzewku katalogów, jeśli można znaleźć i otworzyć dany plik przy pomocy naciśnięcia kilku klawiszy?

CKEditor: własny motyw graficzny

CKEditorCKEditor jest naprawdę fajnym i wygodnym edytorem dla stron internetowych. Jednak chyba wiele osób zgodzi się ze mną, że nie wygląda on zbyt ładnie - posiada brzydkie, kanciaste ikonki, a pstrokate przyciski oknach dialogowych (w domyślnej skórce) nie pasują do niczego. Ktoś powie, że o gustach się nie dyskutuje, ktoś inny - że szkoda tracić czas na poprawianie tego - i tak najczęściej CKEditor oglądany będzie tylko przez administratora strony. Okazuje się jednak, że stworzenie własnej skórki na bazie istniejącej jest dosyć proste, a nawet godzina spędzona nad poprawieniem wyglądu znacznie podniesie estetykę strony.

Wydajność Zend Framework - cz. 2

Niestety piszę ten artykuł dużo później niż chciałem. Przyczyną jest dosyć spory projekt nad którym pracowałem przez ostatnie dwa miesiące. Zlecenie było bardzo ciekawe, więc mam nadzieję że będę mógł wkrótce coś o nim napisać.
W tym czasie na pewnym blogu znalazłem rozwiązanie które wcześniej chciałem przedstawić (http://www.karolnowicki.pl/zend-framework/artykul/pokaz/zend-wolny-jak-zolw---niekoniecznie_-cz-1/). Ponieważ kolega mnie wyprzedził, nie widzę sensu powtarzać tutaj tego samego.
Zgadzam się z tym, że "powolność" Zenda jest spowodowana w dużej mierze ogromną liczbą plików które trzeba dołączyć przy każdym odświeżeniu strony. Liczba ta rośnie bardzo szybko z każdym kolejnym komponentem ZF którego użyjemy. Można to łatwo sprawdzić dodając na końcu pliku index.php polecenie typu echo count(get_included_files()). Oto kilka przykładów:

Pusta aplikacja utworzona poleceniem zf create project:
Użyta pamięć: 3328 kB
Dołączone pliki: 60


Dodajemy layout - (polecenie zf enable layout):
Użyta pamięć: 3584 kB
Dołączone pliki: 71


Teraz to samo z plus prosty formularz (składający się z jednego pola tekstowego i przycisku "wyślij"):
Użyta pamięć: 5376 kB
Dołączone pliki: 100


Wzrost jest bardzo wyraźny. Podam jeszcze wartości dla strony głównej mojego bloga:
Użyta pamięć: 17408 kB
Dołączone pliki: 268


Ogromne zużycie pamięci to głównie zasługa Doctrine, na szczęście można je zmniejszyć przy pomocy dowolnego akceleratora (APC, eaccelerator). Redukcja liczby plików jest możliwa np. dzięki metodzie zaprezentowanej w w/w artykule. Przedstawiony tam sposób jest ciekawy (mój był nieco bardziej prymitywny), jednak trzeba uważać i dobrze przetestować tak przygotowaną aplikację - mogą pojawić się dziwne błędy. Przykładowa klasa która lubi sprawiać problemy to Zend_Locale_Data - odwołuje się do plików po względnej ścieżce, a więc najprościej jest usunąć ją z merge'a.

To na razie tyle w temacie szybkości ZF.

PS. W ciągu tych dwóch miesięcy ze względu na brak czasu nie odpisałem też na kilka maili. Proszę, nie miejcie mi tego za złe i piszcie jeszcze raz :-)

Wydajność Zend Framework - cz. 1

Wiele osób sądzi że Zend Framework jest jednym z najmniej wydajnych rozwiązań tego typu.Tworząc aplikację bazującą na frameworku szybko zauważymy, że działa ona dużo wolniej niż odpowiednik napisany w czystym PHP. Czy powinniśmy się tym przejmować?
Im bardziej rozbudowany projekt, tym proporcjonalnie mniejszy narzut wynikający z zastosowania biblioteki. W większych aplikacjach problemem nie jest framework, lecz (najczęściej) baza danych.

Mimo tego, warto wiedzieć co ma wpływ na tak niską wydajność. A także to, że niewielkim kosztem można ją poprawić.
Dzisiejszy wpis to pierwsza część krótkiej serii artykułów o wydajności frameworku. Zaczniemy od podstaw - pokażę kilka sposobów na pomiar prędkości.

"Resetujący" CSS i Firebug

Firebug

Używanie "resetującego" arkusza CSS jest dosyć dobrą metodą na uzyskanie identycznego wyglądu we wszystkich przeglądarkach. Niestety, znacznie utrudnia badanie styli przy pomocy Firebuga - w widoku CSS resetujące reguły powtarzają się kilkakrotnie, skutecznie zaciemniając obraz całości.

Spróbuj "zbadać" któryś z odnośników w tym blogu - w zakładce CSS zobaczysz coś takiego:

Usunięcie reguł z pliku reset.css jest proste, jednak wymaga grzebania w kodzie Firebuga - nie da się tego wyklikać.

Migracja z Apache do Nginx

Serwer na którym postawiony jest ten blog to "słaby" dedyk z oferty OVH, z zainstalowanym Debianem. Aktualnie obsługuje kilkanaście stron z dość małym natężeniem ruchu (głównie proste, statyczne wizytówki). Całość śmiga na serwerze Apache i mod_php. Ostatnio, spodziewając się zwiększonego ruchu na jednej z tych stron, postanowiłem zwiększyć wydajność poprzez instalację serwera WWW Nginx.

Zend_Mail: wysyłanie poczty w Zend Framework

Zend_Mail: wysyłanie poczty z załącznikami w Zend Framework

Wysyłanie poczty w czystym PHP nigdy nie należało do przyjemności. Funkcja mail() może i sprawdza się gdy chcemy wysłać krótką wiadomość tekstową do jednego odbiorcy, jednak zawodzi w bardziej skomplikowanych zastosowaniach. Wyobraźmy sobie wysyłanie listu z dołączonym plikiem PDF i kilkoma obrazkami wplecionymi w treść. Bez jakiejś dodatkowej biblioteki musielibyśmy utworzyć całą wiadomość ręcznie (przykład). Na szczęście programiści Zenda przygotowali dosyć dobrą klasę którą możemy łatwo wykorzystać w naszej aplikacji: Zend_Mail. W tym tekście pokażę przykłady zastosowania tej klasy. Oprócz tego, zaprezentuję prosty sposób na testowanie wysyłania wiadomości przy pomocy własnego transportu.