Monthly Archive for 08.2005

Niektórym ciężko pojąć

Bez jakichkolwiek negatywnych emocji i czysto informacyjnie. Skrót PLD rozwija się jako PLD Linux Distribution i jest to akronim rekursywny, podobnie jak RPM czy WINE.

Nie, nie ma tam słowa Polish, choć niektórzy z całą pewnością chcieliby je tam widzieć. PLD Linux wywodzi się faktycznie z Polish(ed) Linux Distribution, które zmarło tragicznie z braku deweloperów w 2002. roku. Resztki projektu można znaleźć jeszcze na stronie pld.org.pl, gdzie do dziś swoje repozytorium i stronę domową ma nasz system zarządzania pakietami, poldek.

PLD Linux Distribution całą swoją działalność (strona domowa, repozytoria kodu, serwery FTP, Jabber, listy dyskusyjne, itp.) prowadzi w domenie pld-linux.org.

Notka sponsorowana przez złośliwość pana Ciupaka. Pozdrawiam serdecznie. Bez urazy.

Obawa przed adopcją

Ostatnio miałem okazję pobawić się nową zabawką Microsoftu, a zbiegło się to w czasie z opublikowanym dwa dni temu przez Rogera Johanssona artykułem, więc postanowiłem skorzystać z okazji i napisać coś na ten temat.

Nowy IE nie powala. Z widocznych nowości dodane zostały oczywiście (Microsoft twierdzi, że wynalezione przez nich) panele (które ostatnio zostały przemianowane na karty). Paskudne, jak nigdy dotąd, przy włączonym silniku Luna (domyślny temat Windows XP) są zupełnie nie do oglądania, rozsądnie zaczynają wyglądać dopiero w widoku klasycznym. Dodatkowo, ich przełączanie powoduje widoczne odrysowanie strony, co sprawia, że poruszanie się pomiędzy otwartymi panelami trwa dłużej niż pomiędzy osobnymi oknami przeglądarki. Drugą funkcją jest obsługa RSS, która działa podobnie jak znane z Firefoksa Live Bookmarks połączone z dodanym w Deer Parku czytnikiem subskrypcji.

Zmiany w samym silniku renderującym albo nie występują, albo są bardzo dobrze ukryte. Z punktu widzenia obsługi standardów jest to stary, dobry IE 6.0. Należy jednak pamiętać, że jest to dopiero pierwsza publiczna wersja i na oficjalnym blogu (tak przy okazji, czy ktoś już zauważył, jak dziwnie brzmi próba przeczytania tytułu tej strony przez Polaka?) przeglądarki pojawiły się już informacje na temat lepszego wsparcia dla standardów. Stąd też niepokój Rogera, czy szeroka adaptacja nie przyniesie sieci szkody.

Zaznaczam, że nie mówimy tu o okresie kilku dni czy tygodni od premiery. Jak pokazuje w swoich książkach Jakob Nielsen, czas adaptacji nowych technologii wynosi około roku - po tym czasie możemy przyjąć, że do technologii ma dostęp większość internautów. W przypadku tej przeglądarki okres ten zostanie znacznie wydłużony - dostęp do nowej wersji mają tylko użytkownicy dwóch najnowszych systemów z Redmond - Windows XP i Vista, co na wstępie już utrudnia upgrade ludziom, którzy z różnych przyczyn do dziś korzystają ze starszych systemów. Nie zawsze jest to kwestia ingorancji, czasem jest to uwarunkowane polityką firmy bądź samymi kosztami.

Co więc może przynieść nowa wersja? Cieszymy się (jako webdeveloperzy) na lepsze wsparcie dla standardów. Co jednak z dotychczas stosowanymi obejściami i sztuczkami, mającymi na celu wymuszenie prawidłowego wyświetlania serwisów w starszych braciach siódemki? Wystarczy, że choćby jeden ze stosowanych dotąd hacków będzie nadal działał, a setki czy tysiące stron zaczną cierpieć na nagłą dysfunkcję. Z drugiej strony, poleganie na hackach to branie na siebie odpowiedzialności za ich działanie - nieudokumentowane funkcje mają tendencję do znikania.

Lepsze bezpieczeństwo (przeglądarka po starcie pozbywa się systemowych przywilejów i działa w ograniczonym środowisku użytkownika na kształt znanego z Uniksów chroota) to najgłośniejsze z haseł promowanych przez Gatesa i Ballmera, ale czym jest zabezpieczanie przeglądarki, kiedy ostatnimi czasy głównym źródłem wirusów jest poczta elektroniczna, a MS dawno temu już zarzucił rozwój swojego domowego klienta poczty - Outlook Express, który nadal jest w naszym kraju najpopularniejszym programem tego typu (mimo jego setki błędów i braków).

Najgorsze, czego możemy się spodziewać, to powtórzenie sytuacji z aktualną wersją szóstą przeglądarki, która od pięciu lat jest tylko zapobiegawczo łatana. Szum generowany wokół najnowszej wersji i sam fakt wypuszczenia jej także dla Windows XP, choć początkowo miała być dostępna tylko dla Visty mogą wskazywać na to, że marketingowcy ze stajni MS liczą na jednorazowe uderzenie i odbicie straconego rynku konkurencji, czyli przeglądarce Mozilli.

Jeśli ich działania spełzną na niczym (a tak się zapewne stanie, w końcu nowa przeglądarka pod żadnym względem nie przewyższa Firefoksa), rozwój IE może ponownie zostać zawieszony bądź też zupełnie przerwany, jak miało to miejsce w przypadku Internet Explorera dla komputerów Apple. Grozi nam wtedy kolejny zastój technologiczny, jednak czy nie jest on lepszy od stanu obecnego?

Pimp my design!

Dziś, drodzy zgromadzeni, profesor Pimpin pokaże wam, jak ważne jest rozdzielenie wyglądu i treści.

Profesor Pimpin
Profesor Pimpin przy pracy.

Jako, że od pewnego czasu mój pracodawca zleca cięcie części projektów webmasterom zewnętrznym (outsourcing jest jazzy), oszczędza nam to dużo czasu, który możemy poświęcić na programowanie silników PHP… albo na ponowne cięcie wyżej wspomnianych projektów.

Problem z outsourcingiem polega na tym, że wszyscy zarzekają się, że są istnymi geniuszami, a ich praca warta jest każdych pieniędzy. Dziesiątki, ba - nawet setki, lat w braży, tysiące projektów na karku, pełen profesjonalizm. Rzeczywiście, ostatnio dostałem do ręki projekt wykonany z pozoru bez zarzutu. Szybki rzut okiem do kodu źródłowego ujawnił tylko kilka usterek, ale szablony zostały przygotowane zgodnie z XHTML 1.1 i bez użycia tabel.

Później jednak zainteresował mnie jeden z formularzy, gdzie przycisk wysyłający dane niebezpiecznie nachodził na dolną krawędź fieldsetu. Nic to, pomyślałem, i zająłem się swoją pracą, czyli powoływaniem owego cuda do życia. Mniej-więcej w połowie podłączania szablonów do swojego systemu CMS zapragnąłem zmodyfikować podpis wspomnianego formularza, gdyż do granic eksploatowane przez nas lorem ipsum zdawało się niewiele mówić przeciętnemu odwiedzającemu serwis. Podmieniłem przeto tekst na nieco inny i w tym miejscu szczęki moje rozwarły się by tak pozostać na czas dłuższy. Tekst, owszem, wydłużył się, jednak ostatnie pola formularza znalazły się już daleko za nim, nie wspominając o przycisku, który już wcześniej leżał na dolnej krawędzi. Obecnie przebywał prawdopodobnie około 200 pikseli niżej, niestety nie mogłem tego zweryfikować, gdyż wylewająca się treść formularza była skrupulatnie przykrywana przez inny boks na stronie.

Webmaster tnąc szablony sugerował się projektem i konkretnymi tekstami zastępczymi, jakie zostały tam umieszczone. Cały boks formularza był tak naprawdę namalowany na jego tle, więc wydłużenie jego zawartości spowodowało wylanie się treści poza widoczne pod spodem ramki. Myślenie o designie w kontekście konkretnej treści jest jednym z największych błędów popełnianych przez niespecjalnie doświadczonych webmasterów. Robienie stron na własne potrzeby nie wymaga specjalnej elastyczności - gorzej, kiedy klient postanowi zastąpić proponowane treści własnymi. W końcu to jego serwis i po to właśnie kupił od nas system zarządzania treścią.

Drugi problem dotyczący wspomnianego serwisu to skrypty JS i ich przywiązanie do szablonu. Odpowiedzialne są one za podświetlanie przycisków i podpowiedzi w formularzach. Wszystko działało bez zarzutu do czasu, kiedy zostaliśmy zmuszeni dodać na jednej z podstron kolejny formularz i kiedy to okazało się, że jest to dość trudne. Skrypty, co prawda, znajdowały się w zewnętrzym pliku, ale uparcie wyszukiwały w nim konkretne przyciski i konkretne pola formularzy. Wymusiłoby to na nas dopisywanie obsługi każdego formularza, każdego jego pola i wszystkich nowych przycisków do pliku ze skryptami. W końcu zdecydowałem się zrezygnować z zaproponowanego przez autora rozwiązania (co było samo w sobie dość problematyczne ze względu na bliskie powiązanie ich z funkcjonalnością serwisu) i skorzystać ze sprawdzonych wielokrotnie skryptów własnego autorstwa, o których pisałem w lipcu.

Podsumowując - czas oszczędzony na traktowaniu layoutu dosłownie (z dokładnością do piksela) to czas, który trzeba - prędzej czy później - z nawiązką włożyć w ponowne przeprojektowanie szablonu, kiedy treść przestanie spełniać jego oczekiwania (choć powinno być odwrotnie, to szablon powinien być dla treści, a nie treść dla szablonu).

Na koniec drobna dygresja - bardzo kiepskim pomysłem jest tworzenie graficznych przycisków formularzy poprzez wymuszenie pustego napisu na przycisku i zastąpienie jego tła obrazkiem. Kiedy - podczas testów wspomnianych szablonów - na próbę zablokowałem arkusze CSS, moim oczom ukazały się niewiele mówiące szare kwadraciki. Nie muszę chyba pisać, że nie budziły skojarzeń ze słowami typu przelicz czy wyślij. Czasem pomysłowość w stosowaniu CSS mnie przeraża, zwłaszcza że istnieje <input type="image" />

Historia pewnego systemu

Jako, że z pracodawcą rozliczamy się na podstawie przepracowanych godzin, potrzebny jest nam niezawodny system śledzenia czasu pracy. Kiedy zatrudniłem się tam pierwszego września ubiegłego roku, w użyciu był prosty system webowy, napisany kiedyś na potrzeby firmy przez programistę, Roya. Świetnie spełniał swoje zadanie, a przynajmniej tak nam się wydawało.

Funkcjonalność systemu sprowadzała się do trzech zadań - zbierał informację o godzinie przyjścia i wyjścia pracownika, o jego przerwach (np. bezpłatnych wyjściach na papierosa czy do sklepu), a na koniec dnia zapisywał podane przez pracownika krótkie podsumowanie dnia i plany na dzień kolejny. Całość sprzężona została oczywiście z kalendarzami pracowników, stąd system potrafił odróżnić dni pracujące od wolnych, śledził wykorzystanie urlopu i dawał nieograniczony dostęp do czytania własnej historii.

Przyszedł czas zmian…

Z nieznanych nam przyczyn odcięto nam dostęp do naszej historii, stąd niemożliwe stało się ustalenie, co robiliśmy tydzień temu, kiedy dokładnie pracowaliśmy nad danym projektem, ile dni urlopu wykorzystaliśmy, ani - co najzabawniejsze - jakie są nasze plany na dzisiaj. Zamiast tego zaproponowano nam dostęp do zbiorczych danych dla 3 ostatnich miesięcy (łączna liczba przepracowanych godzin w miesiącu bieżącym i dwóch poprzednich). Z mieszanymi uczuciami, przyzwyczailiśmy się jednak do nowych features.

Przyszedł czas zmian…

Do systemu dodano możliwość podglądania własnych planów na dziś (czyli tego, co wczoraj wpisaliśmy na koniec dnia). Dla dalszego ułatwienia pracy, raporty dzienne przekształciły się w raporty zadaniowe. Zamiast jednego raportu na koniec dnia, od tego momentu byliśmy zmuszeni pisać raport po każdym zamkniętym zadaniu. Uciążliwość była o tyle do przebolenia, że wydawała się niczym w porównaniu z dodatkowym pomysłem - do projektów wprowadzono papierowe karty, gdzie każdy zmuszony był do wypisania wszystkich plików, nad którymi pracował oraz podpisania się pod odpowiedzialnością za ich działanie we wszystkich możliwych przeglądarkach, rozdzielczościach i walidatorach.

Wypełnianie takiego arkusza na bieżąco nie miało sensu, bo mając otwartych 20 plików na raz ciężko stwierdzić, kiedy się skończyło pracę nad jednym z nich - jeśli jego funkcja zazębiała się z którymkolwiek z pozostałych plików, istniały duże szanse jego dalszego przerabiania później. Matriksy, jak młodzieżowo nazwaliśmy nowe obiegówki, zmuszały człowieka do zapisania kartki formatu A4 drobnym maczkiem, a ich wypełnienie wywoływało trwały ból nadgarstka, który towarzyszył nam aż do wieczora. Czysta biurokracja, ale można się było do tego przyzwyczaić.

Na tym etapie też do SĘPa dodano nowość, niespotykaną dotąd nawet we wdrożeniach enterprise’owych. System stał się niczym Chronos, władca czasu - punktualnie o 17:45 zamraża czas. Nigdy więcej spóźnień na randki czy do kina, niezależnie jak długo pracujesz po godzinach, zawsze wyjdziesz o 17:45! Usługa ta, jak mniemam, powstała celem redukcji moich zarobków, gdyż z biura zwykłem wychodzić po osiemnastej. Cóż, czego nie zarobi się w firmie, dorobić trzeba prywatnie, więc możnaby się przyzwyczaić, gdyby nie jedno wydarzenie.

Przyszedł czas zmian…

Papier popadł w niełaskę, być może modna zrobiła się ekologia, a może nikt nie umiał przeczytać milimetrowych hieroglifów - koniec końców, zaoszczędzimy na długopisach. Zamiast tego w systemie raportów cząstkowych pojawiła się lista rozwijalna z opcjami odpowiadającymi aktywnym projektom i ich podzadaniom. Spore ułatwienie dla załogi, choć i tak nic w porównianiu z rajem stanu początkowego. Na przywrócenie status quo szans nie było, więc…

Przyszedł czas zmian…

Raporty po zakończeniu poszczególnych zadań zostały ostatnio zastąpione raportami poprzedzającymi te zadania. Najbardziej wygodę tego rozwiązania docenił Jarv, nasz grafik - jego raporty wymagają bowiem załączania plików z wynikami pracy, co jest nieco uciążliwe przy pisaniu raportu przed wykonaniem faktycznej pracy. Od teraz zamiast jednego kroku, zupełnie za darmo, zyskał dostęp do dwóch. Jestem pewien, że nie może pozbierać się ze szczęścia. Tymczasem słychać już o planach dodania usługi planowany czas wykonywania zadania, co z pewnością wydatnie zwiększy naszą wydajność.

Po co przytaczam tę historię, można spytać? Po to, aby pokazać, jak przekombinowanie przy zarządzaniu projektem może przynieść skutki zupełnie odwrotne do zamierzonych. Ostatnia zmiana w systemie pojawiła się już po odejściu naszego poprzedniego project managera, Lukiego, który obecnie przebywa na emigracji w Anglii, gdzie za ciężko wypracowaną dziesięciokrotność naszych rocznych pensji stara się związać koniec z końcem ;). Widać wyraźnie, że szefowie próbują stworzyć system, który potrafiłby zastąpić zarządcę projektów, gdyby jednak było to możliwe, PM-i nie byliby jednymi z najlepiej opłacanych członków grup programistycznych. Praca bez osoby odpowiedzialnej za organizację jest utrudniona przez specyfikę naszej pracy, gdzie dwóch szefów ma rozbieżne oczekiwania odnośnie zagospodarowania czasu pracy, a zjawiska typu PZP, PZPIZP, czy nawet PZPIPZPZP są codziennością.

Wnioski są proste - próba poprawiania wydajności na siłę generuje zbędną biurokrację, co z kolei niejako wymusza niezamierzony strajk włoski. Pracę w takich warunkach można porównać do wydajności programu działającego pod kontrolą profilera, czy programu śledzącego - człowiek stale rozliczający się z każdej niemal minuty dnia nie jest w stanie zrobić nic w rozsądnym czasie, zwłaszcza kiedy przydział czasu na zadania nie jest ciągły, a rozdzielany pomiędzy kilka(naście) naprzemiennie kontynuowanych zadań.

Co do pisania samych raportów i planowania czasu - to właśnie jest praca dla managera i żaden program go nie zastąpi, nawet przy dużym wkładzie dobrej woli ze strony zespołu. Pomyślcie o tym, jeśli znajdziecie się w podobnej sytuacji.