Archive for category Inne
Czym Ajax jest, a czym nie?

ajax
Wpadłem ostatnio na dość ciekawą kwestię – błędne pojęcie na temat ajaxa skutkuje czasem błędną (bardziej skomplikowaną niż trzeba) implementacją jakiejś funkcjonalności.
Problem jest następujący: użytkownik wpisuje kod. My sprawdzamy go na serwerze i jeśli jest prawidłowy, to zwracamy pewne powiązane z nim właściwości (np. wysokość rabatu) i pewien komunikat, który musi być wyświetlony na stronie (np. w przypadku błędnego kodu “kod promocyjny jest niepoprawny”. Dodatkowe wymaganie jest takie: wysokość rabatu ma się pojawić koło ceny całkowitej, cena ma się zmniejszyć o ten rabat, a komunikat ma się pojawić nad przyciskiem “Zamów”, które jest w fizycznie w innym miejscu niż cena. Dobrze by było, gdyby w wypadku nieprawidłowego kodu przycisk zamów był nieaktywny.
Jeśli o Ajaxie myślisz tylko jak o sposobie na podmienianie fragmentów strony bez przeładowania to możesz skończyć z takim dziwadłem:
Wysyłasz trzy ajaxy – jeden update’uje jakiś element z rabatem, drugi pole z wiadomością, a trzeci (o zgrozo) przesyła kod html przycisku (raz disabled, raz enabled). No i jeszcze parsujesz, tniesz i sklejasz zwrócony rabat, żeby odjąć go od ceny.
Teraz zacznij myśleć o Ajaxie, który jest sposobem na komunikację z serwerem bez potrzeby przeładowania strony (przeładowanie strony to też komunikacja z serwerem – my pytamy, on odpowiada, o coś prosimy, serwer coś robi). Do tego po otrzymaniu odpowiedzi z serwera możemy z nią zrobić co chcemy – nie musi się automatycznie i bezmyślnie ładować do diva #ajaxResponseToParse
I w końcu, jeśli jeszcze nie wiesz, dowiedz się co to znaczy JSON.
Jeśli dodasz te trzy składniki to możesz skończyć z takim rozwiązaniem:
$.getJSON("http://example.com/check_code/XXX", function(data){
$("#discount-ammount") = data.discount;
$("#price").html(data.new_price); // *
$("#message").html(data.message);
$("#submit").get(0).disabled = data.submit_disabled;
});
(*) myślę, że dobrze takie rzeczy liczyć w jednym miejscu po stronie serwera.
Albo jednym słowem – wyjdź poza wygodne schematyczne myślenie i rozejrzyj się wokół. Możliwe, że wbijasz wkręt obcasem siedząc na młotku i gwoździe mając w kieszeni.
Dostarczanie – jak inni to robią?
Gdyby wziąć teksty Setha Godina i zrobić z nich tag cloud jedną z bardziej widocznych pozycji byłoby “ship”. Nie jest to facet, który pisze bloga o tematyce marynistycznej, “ship” jako czasownik “to ship” – dostarczać.
Czy zgodzicie się, że dostarczanie jest ważne? Bez tego cała praca jest nic nie warta. Nikt nie widzi efektów mojej pracy poza mną.
Dostarczanie jest trudne. Cholernie trudne. Czy dla Was też? Pamiętam jeden projekt, w którym wręcz musiałem się zmusić do opublikowania – mój pierwszy tutorial. Ciągle było w nim coś do poprawienia. Ciągle nie był idealny.
Seth pisze, że źródłem tych problemów jest strach. Głównie strach przed porażką siedzący tak głęboko, że nawet nie wiemy, że istnieje. Poza tym nasze nawyki – wygodnie nam w aktualnym stanie, a jakiekolwiek zmiany oznaczają wstrząs i zwiastują ZMIANY.
Wydaje mi się, że gdzieś w tym problemie kryje się różnica między ludźmi sukcesu, a resztą. Ci pierwsi albo nie mają tego strachu, albo go pokonali… albo go ignorują.
Jestem strasznie ciekaw jak Wy radzicie sobie z problemem dostarczania. Będę wdzięczny za komentarze.
Firefox 4 beta i firebug

Postanowiłem skorzystać z okazji i używać najnowszego forefoxa. Działa świetnie, jest faktycznie szybszy, flash działa na nim płynnie, a YouTube przełączyłem w tryb html5, jednak najważniejsze rozszerzenia były na nim zablokowane.
Nawet zdążyłem się poskarżyć mozilli na taki stan rzeczy. Jednak po chwili znalazłem to czego mi było trzeba: Add-on Compatibility Reporter który automatycznie pozwala na używanie niezatwierdzonych (dla danej wersji) dodatków i przy okazji wesprzeć autorów tychże dodatków.
Ostatni powód dla którego nie używałem najnowszego firefoxa z dostępnych znikł. Polecam. Okazało się jednak, że mój entuzjazm był przedwczesny – firebug nie działa w pełni na Fx4, na przykład nie można używać konsoli. Cóż – pozostaje czekać na update…
