Dec 8, 2009 0
Mantra na dziś
Ludzie potrafią przewijać strony w dół… ommm… Ludzie potrafią przewijać strony w dół… ommm.. Ludzie naprawdę potrafią przewijać strony w dół… ommm…
Dec 8, 2009 0
Ludzie potrafią przewijać strony w dół… ommm… Ludzie potrafią przewijać strony w dół… ommm.. Ludzie naprawdę potrafią przewijać strony w dół… ommm…
Nov 2, 2009 4
W przeciwieństwie do projektów internetowych – z perspektywy czasu, to i tak nie ma znaczenia. Bo zabawa na pewno będzie przednia.
Jun 29, 2009 7
W życiu każdego popularnego serwisu internetowego przychodzi czas, kiedy należy zabrać się za jego optymalizację. Zwykle dokupuje się dodatkowe serwery, wpina memcache, optymalizuje kod serwisu i zapytania do bazy danych. Frontend jest zwykle pomijany, choć w rzeczywistości, optymalizując szablony, można uzyskać całkiem niezłe wyniki relatywnie niskim nakładem sił i środków.
Ponieważ miałem ostatnio kilka serwisów, które trzeba było zoptymalizować, postanowiłem przypomnieć sobie technikę CSS Sprites opisaną przez Dave’a Shea na łamach AListApart. Jeśli ktoś jej nie zna – proponuję się zapoznać. To prosta technika, z korzeniami w świecie gier komputerowych, polegająca na łączeniu wielu plików w graficznych w jeden większy, łatwiejszy w zarządzaniu i zmniejszający ilość zapytań o elementy graficzne.
Niedawno przetestowałem to rozwiązanie w kilku serwisach, które aż prosiły się o optymalizację i trafiłem na ciekawe zachowanie. Ale po kolei. Zakładając, że nasz przeciętny Jan Kowalski, czyta artykuł na ALA po raz pierwszy, skorzysta z zapisu zaproponowanego w artykule:
#panel1b a:hover {
background: transparent url(test-3.jpg)
0 -200px no-repeat;}
#panel2b a:hover {
background: transparent url(test-3.jpg)
-96px -200px no-repeat;}
#panel3b a:hover {
background: transparent url(test-3.jpg)
-172px -200px no-repeat;}
#panel4b a:hover {
background: transparent url(test-3.jpg)
-283px -200px no-repeat;}
Puryści i fanatycy optymalizacji już w tym momencie powinni (już możecie) złapać się za głowę. Ale to nie nieoptymalny zapis jest problemem; prawdziwy problem rodzi się, kiedy chcemy skorzystać z tego rozwiązania w serwisie, w którym nasz plik z “duszkami” ma ponad 350kb, przeciętny obiekt wycinany z pliku ma wymiary rzędu 250×160px a takich wycinanek mamy na jednej podstronie około dwudziestu.
W przeciwieństwie do demonstracyjnego pliczku (parę kb) załadowanie takiego potworka chwilę zajmuje i – jak się okazuje – wpływa na sposób budowania strony… w Firefoxie.
Chcieliście napisać: no jasne, że w Internet Explorerze? Właśnie nie. Ten – o dziwo – renderuje stronę tak, jak byśmy chcieli: po załadowaniu pliku, pojawiają się wszystkie elementy graficzne. Od razu. Ale nie w Firefoxie; Firefox wycina je po kawałku tak, jak by nic się nie zmieniło.
Ok, co jest źle z tym zapisem? Przede wszystkim: zupełnie zbędnie powtarza się ten sam kawałek kodu tylko po to, by zmienić jedną/dwie wartości. Deklarację tła i jego powtarzanie możemy przenieść w jedno miejsce tak, by później tylko deklarować co chcemy wyciąć z tego pliku. Poprawniejszy zapis, może wyglądać tak:
#panel1b, #panel2b, #panel3b, #panel4b {
background: url(test-3.jpg);
background-repeat: no-repeat;
}
panel1b {
background-position: 0 -200px;
}
…
I to jest rozwiązanie warte kilka sekund renderowania strony. Firefox nie lubi się z powtarzaniem całej deklaracji ładowanego tła – za każdym razem otwiera plik z grafiką, wycina i wkleja potrzebny fragment wydłużając cały proces w swoistą “nieskończoność”. W moim przypadku, zmieniając deklarację udało mi się zejść z 16-20s renderowania strony (wg YSlow) do 6.
Mar 18, 2009 0
Nie chodzi o możliwości, kod czy rozwiązania. Grono kopiuje lepiej bądź gorzej, ale też nie można nie przyznać, że trochę dobrego chłopaki i dziewczyny z tego projektu zrobili.
To, z czym kompletnie sobie nie radz,ą to zarządzanie informacją. To PR. Jest hype a grono milczy. Od razu przypomina mi się ten obrazek:

z xkcd
Mar 5, 2009 4
Jak kilka słów może diametralnie odmienić sens wypowiedzi, dowiedzieć możemy się z tekstu Microsoft: 2400 stron jest niekompatybilnych z najnowszym IE na Gazeta Technologie.
Czytając, uświadmiamy sobie, że nadchodzi apokalipsa a Microsoft znów jest tym złym, który jeszcze śmie mówić, że tysiące stron w Internecie jest niekompatybilna z jego najnowszym produktem, kiedy to sam, przez lata, olewał standardy. Chciałoby się powiedzieć: standard. Chwytliwy tytuł jest, sensacja w treści jest, popularność leci, wierszówka też i wszystko dobrze. Ale wystarczy zajrzeć na stronę ZDNet na którą powołuje się autor artykułu, by zauważyć, że pozwolono sobie na pewne “semantyczne nadużycie”. W oryginale wspomina się bowiem o IE8 w trybie “standards-mode”, który łamie kompatybilność ze starszymi wersjami IE.
Jak wiemy, Microsoft chce nadgonić stracony czas i IE8 ma zawierać całą masę poprawek w sposobie renderowania stron zgodnych ze standardami, by w końcu przestać być utożsamianym z najbardziej problematyczną przeglądarką na rynku. Poprawienie setek błędów, które przez lata zostały uznane za standardowe zachowanie oznacza, że większość (jeśli nie wszystkie) haki na IE w IE8 przestaną działać co z kolei oznacza, że jeśli strona została źle zaprojektowana – prawdopodobnie rozpadnie się w mniej lub bardziej efektowny sposób.
Dlatego została opublikowana lista stron “niekompatybilnych”, którą można pobrać i zainstalować w IE. Jeśli zdecydujemy się na instalację i wejdziemy na “problematyczną stronę” – IE8 wyrenderuje ją w sposób zgodny z IE7.
Chcąc liczyć się na rynku przeglądarek, Microsoft musiał zdecydować się na lepszą obsługę standardów, nawet kosztem zerwania kompatybilności ze starszymi wydaniami IE.
Lista kompatybilności to dobry kompromis a dodatkowo także autorzy stron mogą powiedzieć – na przykład, za pomocą dyskusyjnego tagu X-UA-Compatibile – IE8, że nie mają czasu by odgruzowywać kod i usuwać haki, więc niech będzie tak miły i grzecznie pokaże stronę jak IE7.
Do całej sprawy odniesiono się także na oficjalnym blogu IE, podając “po prostu fakty” w notce: Just The Facts: Recap of Compatibility View, z której dowiemy się więcej na temat problemu, z perspektywy tych, którzy IE8 tworzą.
Oct 8, 2008 5
Projekty realizowane w ramach wspołpracy między firmami (podwykonawcami), są już w założeniu bardzo ryzykownymi i trudnymi przedsięwzięciami.
Projekty, w których tylko jeden zespół bierze udział w ustaleniach i tylko ten jeden zespół tworzy materiały dla wszystkich podzespołów niżej, wymaga naprawdę dużego doświadczenia, poświęcenia i koncentracji. Niestety, zwykle ten jeden zespół jest do tego najgorzej przygotowany – oczywiście nie zawsze chodzi tu o brak umiejętności. Najczęściej chodzi o brak czasu i zasobów do poprawnego poprowadzenia projektu.
Ten brak czasu zwykle objawia się kiepsko przygotowanymi materiałami i zabawą w buforowany głuchy telefon – informacje i uwagi przekazywane od klienta mają zwykle spóźnienie a w sytuacjach krytycznych, kiedy klient zgłasza problem – zespołom poniżej urządza się piekło, w którym najdrobniejsza kosmetyczna wpadka urasta do rangi końca świata.
A na początku chaosu zwykle stoi jakość przygotowanych projektów – zwykle – graficznych. Te, w sytuacji braku czasu, powstają na zasadzie: strona ma dwanaście unikalnych podstron, my przygotujemy trzy z przykładowymi danymi bo się nam spieszy, wy zróbcie pozostałe dziewięć w oparciu o to, co pokazaliśmy. Resztę materiałów doślemy później.
I choć czasem się udaje, zwykle prowadzi to do problemu: osoby nie biorące udziału w ustaleniach, nie wiedzą wiele ponad to, co zostało przygotowane na makietach/projektach graficznych/spisane w dokumentacji.
Niepełny materiał nie daje poglądu na rozmiar projektu a kwestia przygotowania kolejnych projektów/podstron pokrywa się z pierwszymi zmianami prowadząc do zatoru komunikacyjnego i utraty kontroli nad realizacją projektu.
To założenie, ta paradoksalna oszczędność paru godzin na początku projektu, niemal zawsze odbija się czkawką pod jego koniec. Góra poprawek rośnie w zastraszającym tempie prowadząc do wewnętrznych starć między grupami, wszystkim się coraz mniej “chce”, a grupa prowadząca obrywa od klienta, którego złość – spotęgowaną – przelewa na podwykonawców.
Paradoksalnie, zwykle takie projekty dobijają szczęśliwie do brzegu. Na końcu pisze się płomienne case study sukcesu, wszyscy się poklepują po plecach choć jeszcze “wczoraj” naliczali sobie kary i zrywali umowy.
Projekty praktycznie zawsze są spóźnione – pytanie czy wolimy potęgować swoją złość i spóźnienie przez brak przygotowania. Jeśli nie – warto poświęcić te parę godzin czy dni więcej, na dokładniejsze przygotowanie materiałów. Wyjdzie to wszystkim stronom na zdrowie, choć na początku będzie się wydawało, że jest inaczej.
Jan 29, 2008 6
Polubiłem Internet Explorer 7 od samego początku – większość błędów z którymi trzeba się użerać w IE6 jest załatana co czyni pracę kodera zdecydowanie łatwiejszą.
Pojawiło się jednak parę nowych problemów, w tym takie, które nie istniały w IE6. Dwa dni temu spotkałem się z ciekawym błędem dotyczącym nadawania z-index elementom.
W wielkim skrócie, chodzi o to, że IE7 nie potrafi zmienić raz zadeklarowanego z-index dla elementu. Nie działa nawet !important.
Na przykład, mamy dwa divy, z których jeden ma zasłaniać drugi w momencie najechania na niego kursorem myszy.
div {
...jakiś kod... ...position: itd...
z-index: 0;
}
div:hover {
z-index: 1;
}
Taki zapis zadziała w większości normalnych przeglądarek, a nawet w IE6 (z whatever:hover). W IE7 natomiast nie. Element <div> w IE7 w stanie :hover wciąż ma z-index: 0.
z-index zmienić można, za pomocą Javascript. Zadziała nawet najgłupsze onomouseover="this.style.zIndex='1';".
PS. Jak się okazało inni też wiedzą o tym błędzie.
Ostatnie komentarze