Archiwalia dla 09.2006

O pakietach biurowych, edytorach WYSIWYG i złych nawykach

Z pewnością, każdy z was korzystał kiedyś z bardziej lub mniej udanego edytora WYSIWYG, zagnieżdżonego w dokument HTML. Wybór jest spory, najpopularniejsze to TinyMCE i FCKeditor, jednak wszystkie działają podobnie — aktywują tryb design mode przeglądarki i starają się zapewnić do niego interfejs jak najbardziej zbliżony do Worda. To zło.

Biuro i poczta

W codziennej pracy typowego użytkownika komputerów, podstawowymi narzędziami są klient poczty i pakiet biurowy. To oczywiście spore uproszczenie, ale bez wątpienia są to dwie najbardziej powszechnie używane grupy aplikacji edycyjnych, to jest takich, które nie służą wyłącznie do czytania.

Najpierw zajmijmy się pakietami biurowymi. Czy jest to Microsoft Office, OpenOffice, czy KOffice, podstawowe aplikacje są niezmienne — procesor tekstu i arkusz kalkulacyjny. Niech was jednak nie zwiodą sprytne nazwy. Fakt, że Excel odniósł sukces jako klon aplikacji Lotus 1-2-3, nie implikuje jeszcze, że oba programy podzieliły między siebie tę samą, wątłą, grupę odbiorców. Wszak ludzi, którzy naprawdę potrzebowali stale dokonywać skomplikowanych obliczeń na skoroszytach, wcale nie jest tak dużo. Podobnie, nie każdy zajmuje się przecież profesjonalnie redakcją tekstu, a i do tego istnieją dalece potężniejsze narzędzia (LaTeX!). Czemu więc niemal każdy ma w swoim domu pakiet biurowy?

Microsoft Notatnik i Microsoft Generator Cenników

Tak, z grubsza, możnaby przemianować dwa flagowe produkty biurowe potentata z Redmond.

Zastanawiałem się do niedawna, kiedy ostatnio widziałem plik .doc, który powinien być docem i plik .xls, który faktycznie jest arkuszem kalkulacyjnym. Ba, to samo pytanie zadałem paru znajomym, w tym uczestnikom wczorajszego Grilla IT. Okazało się, że od lat pakiety biurowe służą do wszystkiego, prócz swej pierwotnej funkcji. Nie wspomnę o rozsyłaniu obrazków w prezentacjach PowerPointa, dość powiedzieć, że kiedy zasugerowałem, że większość z nas nie potrzebuje Worda, odezwał się pół-żartem głos, że w czymś trzeba drukować te kartki na drzwi.

Excel stał się sztandarowym narzędziem do trzymania wszystkiego, co choćby trochę wygląda jak tabelka. Nie jest ważne, czy dane lepiej pasowałyby do bazy danych, wydaje mi się wręcz, że tylko kwestią czasu jest, zanim ktoś zacznie projektować w nim meble. Jeśli coś można opisać na siatce, to sporej części społeczeństwa zapala się w głowie lampka z napisem Excel. Nie jest to dziwne, jeśli wyobrazić sobie, że oprócz lampek z napisami jeść i siku jest tam tylko jedna konkurencyjna pozycja — Word.

Word z kolei to ulubiona zabawka wszystkich, którzy nie lubią domyślnej czcionki o stałej szerokości w notatniku. Jeśli trzeba wysłać coś klientowi, jeśli trzeba coś wydrukować i nie jest to cennik (który wcześniej złożyliśmy w pocie czoła w Excelu), to Word czeka w gotowości. Nawet jeśli są to dwa zdania i zamierzamy je wysłać emailem. Szczególnie, jeśli jest to obrazek, który zamierzamy wysłać emailem. Po co psuć niespodziankę naszemu adresatowi, kiedy swój logotyp można spokojnie zagnieździć w dokumencie Worda, najlepiej, jeśli sprowadzi się go przy okazji do formatu znaczka pocztowego.

Mam już śrubki, idę po młotek

Jest takie powiedzenie, że jeśli ktoś dostanie do ręki młotek, to wszystko zaczyna wyglądać jak gwoździe. W przypadku pakietów biurowych sprawdza się nawet w dwustu procentach. Okazuje się bowiem, że nawet jeśli ktoś da nam kiedyś śrubokręt, to i tak będziemy nim śrubki… wbijać.

Podstawowym problemem większości edytorów powstałych od czasu świetnego, dosowego procesora Tag, jest fakt, że główny nacisk stawiają na narzędzia prezentacyjne. Jeśli spytasz kogoś, jakie podstawowe funkcje ma Word, to mogę strzelić w ciemno, że pierwszych kilka miejsc zajmą:

  • pogrubienie
  • kursywa
  • podkreślenie
  • zmiana czcionki

Jak to się ma do dokumentu i jego treści? Nie ma się wcale, tak jak podobne właściwości próbujemy wyplewić, prowadząc ewangelizację na rzecz semantycznej Sieci. Dokument ma tytuł i sekcje z nagłówkami. Do tego można dorzucić dane tabelaryczne, listy uporządkowane i nieuporządkowane, a wszystko polać lukrem z paru wstawionych obrazków i wykresów. W teorii.

Całkiem liczne grono, do którego wlicza się choćby mój ojciec, nie potrafi napisać dwóch akapitów tekstu. Po napisaniu pierwszego, czują się moralnie zobligowani do jego sformatowania. Przy czym, formatowanie w tym przypadku oznacza wybranie mu jednej z kilkudziesięciu czcionek, doenterowanie odstępów, a często i precyzyjne wyspacjowanie wcięcia w pierwszym wierszu. I tak po każdym akapicie. Niektórzy posiedli nawet arkana wiedzy z dziedziny środkowania tekstu za pomocą białych znaków, a prawdziwi twardziele potrafią w ten sposób tworzyć dwie, albo i trzy, kolumny.

Dlaczego?

Bo programy na to pozwalają. Zapewniam, że gdyby AutoCAD pozwalał na bogatsze formatowanie notatek tekstowych, to i ten format znalazłby swoje miejsce pośród plejady biurowych ulubieńców.

Jeśli dasz ludziom przedmiot, którym potencjalnie da się nabić komuś guza, to ktoś to — prędzej, czy później — zrobi. Odkrywców software’owych możliwości ci u nas na pęczki.

A teraz cierpimy

Problem polega głównie na tym, że to, co kiedyś wydawało się świetnym pomysłem, odbija się echem pokuty teraz. Oczywiście, Word pozwala na semantyczne składanie dokumentu, pozwala określić, co jest nagłówkiem, a co treścią. Co więcej, po przypisaniu odpowiedniego szablonu, na podstawie takich informacji, sam odpowiednio ostyluje elementy. Niektórych to zdziwi, ale pod koniec dokumentu będzie też pamiętał, jak się nazywała ta cholerna czcionka, którą wybraliśmy w pierwszym akapicie. Przez lata funkcje te były skrzętnie poukrywane i do dziś wydają się tylko dodatkiem. Niestety, niektórzy już umieją po swojemu.

Dlatego teraz wprowadzenie opisu produktu do sklepu internetowego nie może się obyć bez kolorowania wyrazów, podkreślania co błyskotliwiej sformułowanych zalet i pogrubiania wszystkiego, co się nawinie. Dlatego też WYSIWYG lubię parafrazować jako masz, na co zasłużyłeś. To może się wydawać głupie, może w żaden sposób nie współgrać z identyfikacją wizualną firmy, może psuć szablon serwisu, ale klienci się tego domagają. Kilku — po usłyszeniu, że u nas nie da się pokolorować czcionek — było skłonnych dopłacić.

A gdzie się podział klient poczty?

Na początku wspomniałem, że drugą najczęściej używaną aplikacją są klienty poczty. Tu przecież przez lata panował czysty tekst. Przecież do bogatych wiadomości stosowany jest język semantycznych w teorii znaczników HTML, przecież… Tak, one od lat naśladują Worda.

Just Grill IT!

Nie będę powielał notki Tomka o grillu, a że czas nie pozwala chwilowo na rozpisanie się o szczegółach dyskusji, to napiszę tylko, że nie mogę się doczekać kontynuacji.

Jeśli nie wiesz, czym jest Grill IT, to spieszę wyjaśnić. W skrótcie, jest to impreza integrująca wrocławskie środowisko internetowców, czyli ludzi kochających Sieć (albo przymuszanych przez szefa — pozdrawiam ekipę Janmedia :P).

Technorati Tags: , , ,

Dlaczego systemy szablonowe są ważne

Masa ludzi zadaje mi ciągle to samo pytanie — skoro PHP został stworzony jako język prezentacyjny, to jaki jest sens implementowania w nim kolejnego języka prezentacyjnego — systemu szablonów?

To prawda, że PHP powstał właśnie jako język do osadzania wewnątrz kodu HTML. Prawdą jest, że do dzisiaj mnóstwo ludzi w ten właśnie sposób go używa. Nic dziwnego, podczas wczorajszej wycieczki do Empiku, natknęliśmy się z Qwiatem na stustronicową książeczkę o wdzięcznym tytule PHP — to proste.

Już nie tylko liczniki

Sam język jednak przeszedł od czasów wersji pierwszej ogromne zmiany, największe z nich miały miejsce pomiędzy trzecim i piątym wcieleniem. Skupiają się one na umożliwieniu łatwego budowania dużych aplikacji. Aplikacji, gdzie mieszanie warstwy widoku i kontrolera jest co najmniej wysoce niewskazane, ze względu na czytelność i łatwość zarządzania kodem.

Minęły czasy, kiedy języków server-side używało się do budowania liczników. Często całość treści jest generowana właśnie przez kod. Tyczy się to tak samo PHP, jak każdego innego języka, który może działać po stronie serwera. Zmieniły się oczekiwania, wzrosła skala projektów, logika wewnątrz strony przestała wystarczać.

Ktoś powie zaraz, że przecież można oddzielić warstwę widoku i nadal korzystać tam z PHP, tak jak robi to CakePHP. Można, czasem jednak nie warto. Cake powstał jako klon uznanego frameworku Ruby on Rails. Oba celują w projekty rozwijane — przynajmniej w pierwszych stadiach życia — metodą programowania ekstremalnego. Koncentrują się na jak łatwiejszym zbudowaniu proof-of-concept i dalszym jego rozwoju, już po odkręceniu dodatkowych kółeczek od roweru.

Serwisy budują projektanci, a nie programiści

Oczywiście, są aplikacje, przy budowie których pracują prawie wyłącznie programiści. Niech będzie to Google Mail, YouTube, czy Wrocek. Prawda jest jednak taka, że większość komercyjnych serwisów internetowych jest budowana dla konkretnego klienta przez agencje interaktywne.

Ich ceny oscylują w przedziale od kilku do kilkunastu/kilkudziestu tysięcy i zyski z tego typu działalności ciężko przeznaczyć na zatrudnienie połowy Microsoftu. Dlatego też do zadań programisty często należy tylko przygotowanie silnika, zaś resztę pracy wykonują projektanci — webmasterzy lub graficy, w których gestii jest przygotowanie odpowiedniego kodu HTML, arkuszy CSS i połączenie tego w całość — produkt, który można oddać klientowi.

Co z tego wynika? Ano wynika tyle, że przy zatrudnianiu ważniejsza jest doskonała znajomość obu wyżej wymienionych technologii, niż zdolności programistyczne. Nie każdy webmaster zna PHP (Javę, Pythona, platformę .NET). Smarty można opanować w ciągu jednej doby, to zdecydowanie za mało na poznanie choćby części filozofii projektowania zorientowanego obiektowo.

This sit3 haxx0rd by scr1pt kiddi3z

Wyżej wspomniałem, że nie każdy jest programistą. Praktyka uczy też, że nie każdy powinien. Miałem w życiu wiele sytuacji, w których zmuszony byłem współpracować z ludźmi, którzy zdawali się całą swoją wiedzę pozyskać ze wspomnianej empikowej książeczki. Dość powiedzieć, że podatność na SQL injection to najlżejsze z popełnianych przewinień.

Popularne grzechy to ślepe include‘owanie pliku, którego nazwa trafiła przez wywołania GET lub POST (najczęstsza, poza korzystaniem z register_globals, przyczyna ataków XSS), trzymanie ważnych danych w ciasteczkach przeglądarki, rekordzista umieścił tam nawet całe zapytania SQL. Z pewnością wystarczyłoby na wypełnienie kalendarza Daily WTF na najbliższy rok.

Silniki szablonów mają tę ogromną zaletę, że zapewniają piaskownicę (sandbox), w której można bezpiecznie wywołać kod nieznanego pochodzenia (czytaj: cudzy kod). Nazwa pochodzi od terminu, jakim saperzy nazywają specjalne pojemniki i pomieszczenia do badania i rozbrajania znalezionych przedmiotów, gdzie ewentualna eksplozja nie naraża niczyjego życia.

W tym przypadku niczyje życie nie jest bezpośrednio zagrożone, ale ciężko wypracować sobie reputację, kiedy co drugie wdrożenie twojego silnika kończy się włamaniem na serwer. Korzystanie w przypadku prezentacji z prostego języka, zbudowanego specjalnie do tego celu, daje pewność, że nawet najmniej kompetentny człowiek nie będzie w stanie nic zepsuć.

W zasadzie tyle chciałem napisać, ale może ktoś ma zupełnie inny pogląd na te sprawy? Z góry zapowiadam, że nie interesują mnie argumenty na poziomie Smarty to nieakceptowalny narzut rzędu dziesiątej części sekundy na każdą wyświetlaną stronę.

Strip #029: Komitet samobójców

Są takie dni, kiedy pojawiają się DobrePomysły™.

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