Archiwalia dla 05.2006

webesteem art & design #16

Ukazał się kolejny numer art & design. W środku, jak zwykle, dział web standards, a w nim poczytać można sobie:

  • o zaokrąglonych rogach,
  • o budowaniu tabelek,
  • o stosowaniu kanałów RSS,
  • o budowaniu dynamicznych interfejsów
  • i o cyckach

Tak, zgadza się, wasz ulubiony publicysta was nie zawiódł i udało mu się wpleść cycki nawet do działu o standardach sieciowych. Miłej lektury ;)

Technorati Tags: , ,

Enterprise, beam me up!

Nie ukrywam, że notka została zainspirowana ostatnim postem na The Daily WTF. Podobną sytuacje mieliśmy całkiem niedawno w pracy.

Jako project lead systemu CMS wego, mam dość napięty harmonogram i całość mocy przerobowych firmy jest przeze mnie zaangażowana w rozwój tegoż systemu właśnie. W związku z tym, kiedy pojawił się klient, który wymagał indywidualnego rozwiązania, zadecydowano, że zlecenie zostanie outsource’owane, a realizacja przebiegnie poza firmą.

Nie byłoby w tym nic dziwnego, gdyby nie fakt, że po kilku dniach dowiedzieliśmy się, że aplikacja zostanie zbudowana w oparciu o eZ publish — system bardziej enterprise’owy niż statek kosmiczny bohaterów Star Treka. Wcześniejsze doświadczenia z refaktoryzacją aplikacji budowanych na eZ bynajmniej nie przepełniały mnie optymizmem, ale byłem mimo wszystko dobrej myśli — co prawda, już raz zdarzyło mi się przepisywać aplikację oryginalnie opartą na rzeczonym środowisku na wersję standalone, bo wydajność okazała się kwestią krytyczną, ale z całą pewnością w ciągu ostatniego roku eZ się rozwinął. Niczym Bogusław Wołoszański, powinienem teraz powiedzieć tego dnia nie mogli jeszcze przypuszczać, że już za dziesięć dni, w biurze obok, odbędzie się spotkanie, które odwróci bieg historii.

W dziesięć dni później pojawił się bowiem wdrożeniowiec, specjalista od pewnego systemu, którego domena macierzysta mówi wszystko (easy? no!). Rzeczona aplikacja została zbudowana w czasie, który nazwano rekordowym (choć jej oparcie na frameworku typu Cake z pewnością zaowocowałoby skróceniem tego czasu, jak i oszczędzeniem nam kolejnych kłopotów, ale o tym za chwilę). Przyszedł czas na prezentację. Przygotowania chyżo ruszyły, a specjalista — niczym rączy rumak — wyrwał z kopyta i zatrzymał się na najbliższym słupie. Okazało się bowiem, że nasza wersja PHP jest zbyt nowa. eZ nie działa z PHP5 i tyle, żadna siła boska ni świecka do kooperacji go nie zmusi. Co prawda, wymaga MySQL5, ale parsera oczekuje prehistorycznego.

W 24 roboczogodziny później (Qwiat, jako admin, się specjalnie nie nudzi i bez takich kwiatków), system został uruchomiony. I dnia trzeciego zobaczył Pan, że aplikacja klika i było to dobre. Chciałoby się powiedzieć, że wszystko śmiga, ale byłoby to wyjątkowo niecelne sformułowanie. Strony serwisu potrzebują około sekundy na wyświetlenie. Pod jednym warunkiem — że znajdują się w cache. Jeśli się jednak przedawnią, na radość podziwiania kilkudziesięciu linijek HTML przyjdzie nam czekać dokładnie 35 sekund. Na serwerze, gdzie znajduje się kilkaset serwisów, w tym znacznie bardziej skomplikowane rozwiązania, które — bez użycia cache dla danych z bazy — radzą sobie w dobrze poniżej pół sekundy.

Cóż na to można zaradzić? Wdrożeniowiec zalecił instalację eAcceleratora i rekompilację MySQL z parametrami podanymi na stronie eZ publish. Pewnie, a potem zakup dedykowanego serwera. eAccelerator przyspieszył proces generowania strony o całe 3 sekundy, druga sugestia trafiła wprost do /dev/null. Ale czegóż można się spodziewać po aplikacjach z enterprise w sloganie marketingowym?

Zapomniałem wspomnieć, że w sytuacji, gdzie wszystkie vhosty mają ustawiony limit pamięci na nie więcej niż 12 8 MB, nasz system na eZ z rozkoszą poprosił o 50 MB żeby się w ogóle uruchomić. Boję się sprawdzać, jak wygląda diagram przepływu sterowania w kodzie, ale na usta ciśnie się cytat z komentarzy do wspomnianego posta na The Daily WTF:

It forgets the steps where it prints an image of the transactions and then scans them on a desktop to get the wood border.

Technorati Tags:

Tim, Oh Really?

Wygląda na to, że planowany z nbw na lato event będziemy musieli przenieść z Wrocławia nad morze i przemianować na Łeba 2.0™ (nazwa jest nasza i nie ważcie się jej użyć bez pisemnej zgody!). A to wszystko ze strachu przed tym, że pozwie nas Tim (nie, nie ten z Monty Pythona).

Strasznie zabawna sprawa — wygląda na to, że prawnicy wydawnictwa O’Reilly Media pospieszyli się nieco i domagają się globalnego zaprzestania stosowania nazwy, którą próbują zarejestrować w Stanach. Problem w tym, że nie mają do nazwy jeszcze prawa, a ich ofiara znajduje się w Irlandii, gdzie amerykańskimi patentami mogą sobie pomachać co najwyżej.

Ja nieśmiało przypominam, że posiadam prawo pierwszeństwa do nazwy Web 5.0, ph33r m3!

Update: po chwili przemyśleń — zgodnie z duchem 2.0 powinniśmy przemianować Web pomiędzy-1-a-3.0 na Web BETA

Koder poszukiwany

Jak to bywa co jakiś czas, Internet Center Polska szuka pracowników. Zatrudniamy! Tym razem poszukujemy osoby, która będzie potrafiła się wykazać na stanowisku…

Koder (X)HTML/CSS — wpółpraca zdalna

Oczekujemy od ciebie:

  • doskonałej znajomości składni XHTML,
  • umiejętności dobierania znaczników do semantyki dokumentu,
  • sprawnego omijania znanych problemów przeglądarek z Redmond,
  • pasji w tworzeniu czystego kodu i przejrzystych arkuszy stylów,
  • dobrej znajomości składni szablonów Smarty,
  • terminowości w realizacji projektów

W zamian dajemy możliwość zdalnej pracy (pracujesz, nie wychodząc z domu!), stałego kontaktu ze specjalistami (jak Tomasz Staniak). Jeśli naprawdę jesteś dobry (lub dobra!), to możesz liczyć na stałą współpracę i ciągły dostęp do zleceń.

Kontakt

Jeśli spełniasz wszystkie powyższe wymagania, czym prędzej daj nam o tym znać, pisząc na adres <praca at icenter pl>, w temacie podając słowo Koder.

Technorati Tags: , , , , ,

Niefajnie

W panelu administracyjnym bloga zaciekawił mnie przychodzący link. Mam w zwyczaju takie klikać i szukać ciekawych blogów. Tym razem trafiłem na lustro.

Polecam porównać sobie arkusze stylów: patrys.css vs. kubi.css. Box About też wygląda jakby znajomo.

Tak się nie robi. Nigdzie nie napisałem, że style można sobie wziąć. Licencja CC obejmuje tylko treść bloga.

Technorati Tags: ,

Warsztat: PHP

Najładniejsze szablony nie sprzedadzą się same, kiedy klient oczekuje, że serwis będzie robił coś więcej niż prezentacja statycznej treści. Tutaj potrzebne są języki server-side, a ja akurat specjalizuję się w PHP (co nie przeszkadza mi swobodnie poruszać się w Perlu, Pythonie i w miarę sprawnie radzić sobie z kodem Ruby — nie uważam PHP za najlepszy język i o jego wadach już kiedyś pisałem).

Konfiguracja środowiska

Na potrzeby rozwoju aplikacji mamy uruchomione własne mini-środowisko, klasyczny LAMP, z PHP5 na pokładzie. Większość konfiguracji to wierna kopia ustawień maszyn produkcyjnych, na których aplikacje są wdrażane, jest jednak kilka kwestii technicznych, o których warto wspomnieć.

error_reporting
zawsze ustawiony na najwyższy poziom, z E_STRICT włącznie, PHP wybacza za dużo, żeby pozwolić sobie na zignorowanie choćby jednego notice
register_globals
bezwzględnie wyłączony, poleganie na tym mechanizmie to proszenie się o kłopoty (wystarczy powiedzieć, że spory odsetek ataków na serwisy wynika właśnie ze stosowania automatycznie rejestrowanych zmiennych), a zastosowanie w ten sposób uzyskanych zmiennych w środowisku obiektowym — nikłe
magic_quotes_gpc
cóż — chciałoby się napisać, że to zło, ale jeszcze przez jakiś czas aplikacja, przy której pracujemy, będzie wymagać tego ustawienia — brak wsparcia dla preparowanych zapytań w pierwszych wersjach sprawił, że teraz jeszcze trudniej byłoby je zaimplementować — w najbliższym czasie do projektu dołączy kod, który usuwa automatyczne cytowanie, jeśli jest aktywne, a następnie cytuje ponownie zawartość tablic $_GET, $_POST, $_REQUEST i $_COOKIE

Biblioteki

PEAR
niewątpliwie, najobszerniejsza biblioteka rozszerzeń językowych dla PHP, paczki Mail i Mail_Mime stanowią podstawową część większości z naszych aplikacji
CakePHP
szkielet do szybkiego prototypowania i wdrażania aplikacji o średnim i małym poziomie skomplikowania — pozwala minimalnym nakładem kodu uzyskać maksimum funkcjonalności, a przy tym posiada wygodne narzędzia do testowania aplikacji
Smarty
jeden z najwygodniejszych i najłatwiej rozszerzalnych silników szablonowych dla PHP, zbudowany na bazie wtyczek i pozwalający na wykonywanie praktycznie dowolnych operacji na przekazanych przez silnik danych — jednocześnie chroni wnętrze aplikacji przed złośliwymi zmianami w szablonach i optymalizuje czas wykonania kodu przez utrzymywanie cache szablonów w postaci skompilowanej do kodu PHP
class.jabber.php
od dłuższego czasu nierozwijany, ale wciąż jeden z najbardziej wszechstronnych interfejs do sieci Jabber, używany przeze mnie do wysyłania automatycznych powiadomień z poziomu serwisów
Magpie RSS
bardzo wygodna klasa do parsowania wszelakiej maści kanałów informacyjnych, wbrew nazwie, świetnie sobie radzi z dokumentami Atom

Bezpieczeństwo kodu

ionCube PHP Encoder
jeden z wiodących na rynku pakietów do nieodwracalnego szyfrowania kodu, tańszy od konkurencyjnego rozwiązania Zend Guard i oferujący praktycznie identyczną funkcjonalność, a przy tym powszechnie dostępny na polskich serwerach
eAccelerator
darmowy, ale znacznie uboższy w funkcje kuzyn komercyjnych narzędzi do zabezpieczania kodu, wywodzący się z bazy kodowej popularnego przodka — Turck mmCache, jedyne dostępne narzędzie w przypadku serwerów home.pl

A czego wy używacie w codziennej pracy? O edytorach postaram się podyskutować następnym razem, więc póki co, zostańmy przy języku.

Technorati Tags: , , , , , , , , ,

Jak się dostać?

Jeśli kiedykolwiek się zastanawialiście, jak najlepiej odbyć podróż zagraniczną, to bardzo pomocny może okazać się nowy serwis. Właśnie dziś ruszyła aplikacja HowToGetTo.com — pomocnik planowania podróży.

Aplikacja pozwala wybrać dwa miasta — początek i cel swojej podróży — i sugeruje różne metody przebycia trasy. Przy każdym połączeniu podany jest koszt (jeśli jest znany), czas podróży, częstotliwość kursowania transportu i przewoźnik. Ten ostatni jest zarazem odnośnikiem do strony, która pozwoli uzyskać szczegółowe dane lub zarezerwować bilet. Ciekawostką jest sprzęgnięcie listy lotnisk z bazą wyszukiwarki Google, dzięki czemu po kliknięciu w nazwę lotniska, możemy zobaczyć jego dokładne położenie na mapie.

Całość wykonana jest w języku angielskim i — co ciekawe — serwis pozbawiony jest reklam. Zapraszam do testów. Jak zastrzega sobie Tomasz Bartosiewicz, autor serwisu, strona jest jeszcze w fazie testów i dopracowywania, a baza informacji o połączeniach nie jest pełna.

Technorati Tags: , ,

Strip #026: Gdzie w Gadu-Gadu jeszcze nie ma reklam?

Wszyscy mówią tylko o regulaminach, a ja się zastanawiam, jak jeszcze na tym można zarobić?

Tutaj w graficznych przeglądarkach wyświetla się komiks

Strip #025: All resistance is futile…

Skoro i tak piszą o mnie w ostatniej Polityce, to przy okazji polansuję się może aktualnymi tematami.

Tutaj w graficznych przeglądarkach wyświetla się komiks

Warsztat: przeglądarka

Kiedyś każdy szanujący się webdeveloper używał do budowania serwisów Firefoksa, bo… nie miał specjalnego wyboru. Czasy się zmieniają i inne przeglądarki oferują coraz więcej udogodnień pod tym kątem. Dlatego chciałem sprowokować was do odpowiedzi na proste pytanie: czego używacie do pracy na co dzień?

Mozilla Firefox

Moją podstawową przeglądarką od lat jest Firefox. Dawniej znany jako Phoenix, później Firebird, jednak w środku wciąż ten sam. O gustach się nie dyskutuje, więc do interfejsu przekonywać nie zamierzam. Chciałem jednak wspomnieć o kilku funkcjach, z których regularnie korzystam.

podgląd fragmentu drzewa DOM
Wystarczy zaznaczyć interesujący nas fragment dokumentu, niezależnie od tego, czy był częścią oryginalnej strony, został pobrany Ajaksem, czy wygenerowany przez skrypt po stronie użytkownika. Klikamy prawym przyciskiem i wybieramy Pokaż źródło zaznaczenia.
wybiórcze zaznaczanie tabel
Przytrzymując klawisz Ctrl i klikając na krawędzi tabeli bądź wewnątrz jednej z komórek, możemy zaznaczyć sobie dowolny zestaw danych. Gotowy do skopiowania i wklejenia w inne miejsce.
wbudowana konsola błędów
Niegdyś niesamowicie pomocna, obecnie znacznie mniej przydatna funkcja. Pokazuje w locie wszystkie błędy wykryte w dokumencie. Niestety, bez podziału na zakładki, z których pochodzą komunikaty. Od wersji 1.5, z nieznanych mi przyczyn, konsola JavaScript pokazuje również błędy CSS, które kwalifikowane są jako krytyczne, co przy wspomnianym braku ograniczenia do danego dokumentu czyni konsolę ledwo używalną.
odświeżanie źródła
Wbudowany podgląd źródła dokumentu bez problemu reaguje na kombinację klawiszy Ctrl+R i grzecznie odświeża podglądane źródła bez potrzeby przeładowywania strony w przeglądarce.
inspektor DOM
Przychodząca z programem przeglądarka drzewa dokumentu pozwala wygodnie ustalić, jak wygląda zagnieżdżenie elementów i odczytać ich podstawowe atrybuty.
rozbudowane informacje o stronie
Dostępna pod prawym przyciskiem opcja Informacje o stronie pozwala nie tylko poznać rozmiar bieżącego dokumentu, ale w wygodny sposób listuje wszystkie odnośniki i elementy graficzne, w przypadku tych ostatnich podając także alternatywne wersje tekstowe, jakie zostały im przypisane.

Wtyczki

Sama przeglądarka to jednak niewiele i choć można się obejść bez dodatków, dopiero wtyczki dają prawdziwy komfort budowania serwisów.

Web Developer
Dodaje wygodne menu kontekstowe i pasek narzędzi skierowane specjalnie dla autorów stron. Mamy tu pełne spektrum wyłączania, włączania i edycji w locie dla arkuszy stylów, formularzy, grafiki i podstawowych elementów drzewa dokumentu. Wszystko można zmierzyć, obrysować, a na końcu przepuścić przez walidator.
FireBug
Prawdziwy kombajn do śledzenia kodu JavaScript. Podaje liczbę błędów dla bieżącej zakładki przeglądarki, kliknięcie tej informacji rozwija panel z przyborami na każdą okazję. Jeśli uważasz, że konsola wbudowana w Firefoksa jest przeładowana zbędnymi komunikatami, jeśli potrzebujesz debugować zapytania AJAX w locie, jeśli chciałbyś inspektora DOM który zwyczajnie pozwoli ci kliknąć na elemencie, to rozszerzenie jest dla ciebie.
ColorZilla
Marzenie każdego grafika — pipeta wbudowana w przeglądarkę. Widzisz ciekawy motyw kolorystyczny na stronie? Zastanawiasz się, czy to obrazek, czy kolor tła? To bez znaczenia, bo wystarczy uaktywnić ColorZillę i kliknąć dowolny punkt w ramach okna przeglądarki. Od tej chwili kolor jest dostępny do skopiowania w dowolnej postaci. Trudno trafić? Dostępna jest opcja powiększenia strony, podobna do tej zawartej we wspomniamym wcześniej rozszerzeniu Web Developer.

A jakich wy używacie zestawów? Zaznaczam, że chodzi mi tylko o rozszerzenia przydatne do budowy stron, inne, jak choćby Tabbrowser Preferences, mnie w tym miejscu nie interesują.

Technorati Tags: , , , , , ,