Katastrofy tam
Największe tamy na świecie i ich katastrofy
Tsunami
Największe tsunami w historii ludzkości
 
Rozmowa kwalifikacyjna w Google
Rozmowa kwalifikacyjna w Google

Trochę pochodziłem po Internecie i w końcu trafiłem... na swoją własną witrynę :P

Ruszyło mnie sumienie i oto znowu są aktualizacje na eldoras.com. I będą. Dojdą tak filmy, jak funkcjonalności. Już prędko :)

A kto nie widział, ma czego żałować ;)

Na mój gust, prekursor techno ;)

I to taki, którego wciąż warto słuchać. Sample można odsłuchać na oficjalnej stronie Quicksilvera, klikając w Music (plama w prawym górnym rogu) -> Releases -> Free (1997). Stare, ale dobrze daje po garach ;)

Po ok. tygodniu pisania i testowania kodu, mogę wreszcie udostępnić wersję 0.9 aplikacji będącej chatem AJAXowym.

AJAX Chat w akcji

Features, czyli co mną kierowało:

  • Internauta może za pomocą kliknięcia rozwinąć lub schować chat - nie przeszkadza mu w przeglądaniu witryny, będąc domyślnie schowanym.
  • Internatura może sprawnie poruszać się po witrynie mając rozwinięty chat: nie jest to pop-up, lecz stanowi integralną część strony, będąc wraz z nią przesuwalnym suwakami. Sprawne poruszanie oznacza także, że przy przejściu do innej podstrony, chat zostanie automatycznie otwarty.
  • Chat jest estetyczny: nie zawiera żadnych grafik, jednak świetnie komponuje się z witrynami społecznościowymi - głównie forami, czy stronami hobbystycznymi. Adresy są automatycznie zamieniane na odnośniki. Przewijanie okna jest podobne do znanego z Gmaila: chat sprawdza, czy użytkownik nie czyta wcześniejszych wiadomości, zanim przesunie się, pokazując nową treść. Dodatkowo dodany jest przyjemny dla oka efekt znikania i pojawiania się chata.
  • Z punktu widzenia developera, stanowi w miarę kompaktowy skrypt: całość zajmuje 31KB (po usunięciu niektórych zbędnych części pakietu Script.Aculo.Us). Oparty jest na Prototype i MySQL, a kod jest na tyle przejrzysty, że zbędne są komentarze. Naturalnie, jest odporny na XSS i tego typu atrakcje.
  • Skrypt nie generuje dużego obciążenia: aktualizuje treść jedynie przy rozwiniętym oknie, z czasem ustawionym domyślnie na 2 sekundy. Pobiera generowany przy wysyłaniu wiadomości plik stały z odpowiednimi nagłówkami, które gwarantują korzystanie z cache przeglądarki w przypadku braku zmiany treści.
  • Działa bez zarzutu pod przeglądarkami: Firefox 1.5.0.4, IE 6.0, Opera 8.52. Pod innymi nie sprawdzałem, jednak powinien chodzić pod wszystkim, co jest obsługiwane przez script.aculo.us i prototype. Oczywiście trzeba być przygotowanym na błędną interpretację CSS - nie przykładałem do tego wielkiej wagi, ponieważ większość osób i tak stworzy własny szablon

Wszystko spakowałem haxorskim winrarem. Do pobrania: wersja 0.9. Licencja... naturalnie darmowa do zastosowań niekomercyjnych. W przypadku komercyjnych - jakaś symboliczna opłata ;) Wymagam jedynie, by zostawić w okienku chata odnośnik do http://ajax.eldoras.com. Demo działającego skryptu można obejrzeć na garfiku.

Instalacja:

  • Rozpakowujemy archiwum, modyfikujemy w pliku newmsg.php dane do połączenia z bazą danych (login, hasło, nazwa bazy). Całość wgrywamy na serwer.
  • Używamy db.sql do stworzenia tabel w bazie danych MySQL.
  • Do każdej strony, na której chcemy mieć chat, dołączamy w nagłówku 5 plików, jak widać w pliku sample_index.php (1 CSS i 4 skrypty, przy czym fixed.js to hack dla IE umożliwiający uzyskanie pozycji typu fixed). W treści strony (może być zaraz po znaczniku body) dodajemy diva "openchat" oraz includujemy chat.php (przykład w sample_index.php).
  • Opcjonalnie możemy zmodyfikować arkusz styli chat.css do naszych potrzeb. Nie zalecam zmiany identyfikatorów CSS - są do nich przypisane funkcje w JavaScript.

Wszelkie uwagi mile widziane, zmiany można nadsyłać na e-mail. Ufam, że będzie to coś, co rozejdzie się po necie i zostanie udoskonalone - mój wkład w open source community :)

Community jednak także mi trochę pomogło. Główne podziękowania należą się Patrysowi za cenne uwagi i praktyczną pomoc oraz Riddle'owi za uświadomienie mnie odnośnie zagadnień XHT cross-subdomain :)

Jak wiemy, Jogger nie pozwala na wgrywanie swoich plików *.php, co jest w pełni zrozumiałe. Ciężko również oczekiwać, by admin robił wyjątki, choć większość ma swoje marzenia co do udoskonalenia jogga. Ja na ten problem trafiłem, próbując uruchomić chat AJAXowy - nie szło, bowiem (dzięki w kierunku Riddle'a) XmlHttpRequest nie pozwala na robienie zapytań nie tyle cross-domain, co nawet cross-subdomain.

Myślałem więc, jak problem obejść. Jogga mam podpiętego pod własną subdomenę - jak widać. Nie ma więc siły, bym jakoś zamieścił pod adresem blog.eldoras.com/whatever swój plik *.php mając subdomenę skierowaną na IP Joggera.

Widzę dwie możliwości, które by raczej nie zagroziły samemu Joggerowi:

1. Stworzenie skryptu generującego przekierowania do określonych stron przy pomocy header("Location: http://anything.eldoras.com");

2. Stworzenie skryptu generującego przekierowanie przy użyciu silnika Apache'a (nie wiem jak to zrobić, ale mniemam, że deczko trudniej).

Napisałem w tej sprawie maila do Sparrowa, jednak bez odpowiedzi. Do Joggerowców zwracam się z pytaniem: czy jest problem, którego nie dostrzegam w tym rozwiązaniu?

EDIT: Na privie wyszło, że chyba nie wyraziłem się do końca jasno. Joggerowcy mieliby możliwość modyfikowania jedynie URLa na który ma zostać przeprowadzone przekierowanie. Tym sposobem, XHT by przeprowadzał zapytania do tej samej subdomeny, chociaż sam kod PHP byłby już parsowany przez inną subdomenę, poza Joggerem.

Pora już wczesna... więc przejdę od razu do rzeczy.

Doszedłem do wniosku, że shoutboxy to dziadostwo - używają iframe, rzadko się same odświeżają. Do tego mają podobną wadę jak chaty na www - jesteśmy zmuszeni cały czas mieć otwartą tą samą stronę. Chwila myślenia, 4 dni kodowania i oto jest: AJAXowy chat, który szybciutko można dołączyć na dowolną stronę serwisu, pozbawiony powyższych wad.

EDIT: Projekt można pobrać z http://ajax.eldoras.com.

Projekt ma w zamierzeniu być open-source, jednak dopiero, gdy przejdzie pierwsze testy. Narazie wersję roboczą można zobaczyć na garfiku. Wygląda jak wygląda - nie miałem już dziś siły bawić się w layout pod różne przeglądarki. Skrypt idealnie pasował do tego bloga, ale dzięki temu, że jogger nie ma możliwości uploadu *.php, zaś XHR blokuje cross-subdomain queries, to pies pogrzebany. Przyznam, że przydałoby się jakieś lepsze środowisko testowe. Marzy mi się forum - jeśli ktoś chce zaryzykować, proszę o kontakt na JID zar@uaznia.net.

Sam projekt obsługuje (a przynajmniej powinien) cacheowanie, nie pobiera treści, gdy chat jest schowany, transformuje http na linki, chyba nie jest podatny na XSS i w sumie tyle :)

Mile widziane próby znalezienia słabych stron, pomysły itp... jak widać, stadium można określić jako wczesną alfę ;) Z rzeczy, które mi teraz przychodzą do głowy... podrasować działanie paska przewijania, poprawić widok w różnych browserach, pamiętanie nicka i coś tam jeszcze...

Przeczytaj najpopularniejsze artykuły!

Katastrofy tam
Największe tamy na świecie i ich katastrofy
Tsunami
Największe tsunami w historii ludzkości
 
Rozmowa kwalifikacyjna w Google
Rozmowa kwalifikacyjna w Google
Pisanie artykułów za pieniądze
Jak zdalnie zrobić karierę redaktora?
Pozycjonowanie bloga
Jak udoskonalić i wypromować bloga?
Pierwsza rozmowa kwalifikacyjna: IBM
Pierwsza rozmowa kwalifikacyjna - IBM