Ten blog nie jest już rozwijany. Wraz ze wszystkimi artykułami zostały przeniesiony pod adres wmroczkowski.pl

Czy chcesz przejść pod nowy adres?

środa, 27 sierpnia 2008

EA Sports kontra użytkownicy TouTube

Dzisiaj trochę z innej beczki ale ciągle o programowaniu ;) Jak wiadomo napisanie bezbłędnego programu nie jest rzeczą łatwą, zwłaszcza jeśli chodzi o grę komputerową. Tylko programiści gier mogą wiedzieć jak wiele warunków musi zostać spełnionych i ile testów musi przejść program zanim zostanie ostatecznie skończona - a terminy gonią. Dotyczy to w szczególności gier, które ukazują się co roku, odświeżone, z nazwą różniącą się tylko rokiem na końcu. Wiecie już o jakie gry chodzi? Oczywiście, słynne gry sportowo-zręcznościowe EA Sports. Bezwzględni użytkownicy YouTube nie przepuszczą żadnej grze, jeżeli zauważą jakieś bugi, publikując błędy w postaci filmów w internecie. Wchodząc na YouTube możecie znaleźć mnóstwo tego typu filmów, wystarczy wpisać "game bugs" lub coś podobnego. Do tej pory nikt z tego powodu nie był specjalnie urażony; twórcy gier uczyli się na błędach a internauci się śmiali. Levinator25 myślał, że tak będzie również tym razem i zamieścił na YouTubie filmik z bug'iem z Tiger Woods PGA Tour 08, w którym mogliśmy zobaczyć jak nasza postać w grze cudownie chodzi po wodzie. Chciałbym zobaczyć minę Levinatora25, kiedy zobaczył odpowiedź EA Sports na jego film ;) Obejrzyjmy ją razem.

niedziela, 24 sierpnia 2008

Google i matematyka

Właśnie trafiłem na pewną ciekawostkę. Nasza ulubiona wyszukiwarka nie jest jednak idealna - wystarczy wejść na google.pl i sprawdzić ile to jest 399 999 999 999 999-399 999 999 999 998. My znamy wynik, ale czy google zna? A może to kolejny żart jego twórców, obdarzonych tak dobrze już znanym i nie do końca rozumianym poczuciem humoru?

niedziela, 17 sierpnia 2008

Podstawy HTML i CSS - wideo tutorial

Serfując w sieci znalazłem bardzo interesujący tutorial - można się z niego w 40 minut nauczyć podstaw HTML i kilka naprawdę istotnych rzeczy na temat CSS. Jeżeli ktoś zaczyna zabawę z tymi językami to naprawdę gorąco polecam zacząć od tego - to tylko 40 minut!


źródło: http://pl.youtube.com/watch?v=GwQMnpUsj8I&feature=rec-fresh

piątek, 15 sierpnia 2008

Mod_rewrite, czyli przyjazne adresy URL z .htaccess

Często zdarza się, że nasze adresy URL do podstron zaczynają nabierać naprawdę przerażająco długiej długości, np. /index.php?id=galeria&sid=2008&ssid=wakacje. Z takim adresami często nie radzą sobie roboty indeksujące strony, dlatego część podstron może po prostu zostać nie dodana do indeksu. Oczywistym minusem tak długich adresów jest również ich nieczytelność. Tutaj z pomocą przychodzi nam moduł Apache'a - mod_rewrite. Przede wszystkim należy sprawdzić w pliku konfiguracyjnym Apache'a czy nasz serwer go obsługuje, szukamy więc linijki LoadModule rewrite_module modules/mod_rewrite.so. Jeżeli jest odhashowana to wszystko w porządku, w przeciwnym wypadku usuwamy hasha (#). Jeżeli oczywiście nie masz dostępu do pliku konfiguracyjnego to po prostu wykonaj w jakimś skrypcie php polecenie phpinfo(); i odszukaj części odpowiadającej za uruchomione moduły - powinieneś tam znaleźć wpis odpowiedzialny za mod_rewrite. Jeżeli go nie znajdziesz to musisz się skontaktować z administratorem w celu uruchomienia tego modułu.
Mod_rewrite korzysta z wyrażeń regularnych, oto najważniejsze z nich:
. Dowolny znak
^ Oznacza początek napisu
$ Oznacznik końca (c$ znaczy, że ciąg tekstowy musi zakończyć się na c)
+ Wystąpi jeden lub więcej razy
* Zero lub więcej wystąpień
? Zero lub jedno wystąpienie
! Negacja wyrażenia
( Rozpoczyna grupowanie (przetwarzanie ciągu znaków, jakby był to pojedynczy element)
[ Rozpoczyna klasę znaków, np. dopasowane do przedziału od 0 do 9, to definicja klasy [0-9]

Przykładowy wpis do .htaccess może wyglądać tak:
RewriteEngine on
RewriteRule ^index.html$ index.php [L]

Pierwsza linia powoduje uruchomienie mod-rewrite, natomiast w drugiej widzimy już użycie wyrażeń regularnych. Taki zapis oznacza, że jeżeli na serwerze mamy plik index.php to możemy się również do niego odnieść wpisując index.html. Jeżeli chodzi o atrybut [L] to jest to skrót od Last rule i oznacza on, że linia w której się znajduję jest ostatnią linią, czyli kolejne reguły nie będą dalej wykonywane. Dodatkowo możemy dopisać atrybut [NC], który oznacza że to czy adres będzie wpisany dużymi literami czy małymi nie robi żadnego znaczenia, tak więc wpisując domeda.com/STRONA1/index.php otrzymamy to samo co przy wpisie domeda.com/strona1/index.php.
Teraz zajmijmy się już konkretnymi przykładami. Załóżmy, że nasza strona znajduję się pod takim adresem: www.strona.pl/menu.php?id=4. Aby adres był czytelny dla użytkownika dobrze jakby był takiego formatu: www.strona.pl/menu-4. Aby otrzymać taki wynik wystarczy dodać do .htaccess następującą linkijkę: RewriteRule ^menu-([^-]+).html$ menu.php?id=$1. Teraz po kolei wyjaśnię ten zapis: ([^-]+) oznacza wszystkie znaki z wyjątkiem myślnika, w takim przypadku za wykluczenie odpowiedzialny jest znak ^, natomiast + oznacza wystąpienie znaku raz lub więcej razy. Jeżeli np. chcemy aby tam były umieszczone wyłącznie liczby to wpisujemy ([0-9]+) . Jeśli chodzi o okrągłe nawiasy oznaczają one zmienne - w tym przypadku to co jest w nawiasie w pierwszej części ciągu jest przenoszone do drugiej części do zmiennej $1 i wyświetlane w URL. Jeżeli nawiasów byłoby więcej to odpowiadałyby one kolejno zmiennym $1 $2 $3 itd.

Tutaj bardziej czytelny przykład:
RewriteEngine On
RewriteRule (aktualnosci)/(kraj)/([0-9]+) /wyswietl.php?what=$1&skad=$2&id=$3
#lub
RewriteRule (+)/(+)/([0-9]+) /wyswietl.php?what=$1&skad=$2&id=$3
#lub
RewriteRule ([a-z]+)/([a-z]+)/([0-9]+) /wyswietl.php?what=$1&skad=$2&id=$3

Zamieni on adres http://moja-strona.pl/wyswietl.php?what=aktualnosci&skad=kraj&id=108 na: http://moja-strona.pl/aktualnosci/kraj/108. Po więcej szczegółów odsyłam do dokumentacji Apachea.

.htaccess i blokowanie dostępu do stron

Wcześniej pisałem o blokowaniu dostępu do strony za pomocą pliku .htpasswd, jednak możemy również zablokować dostęp do naszych stron przez określony adres IP lub przez całe ich grupy. Tutaj jak zwykle przydatność takiego blokowania jest jedynie ograniczona przez naszą wyobraźnię. Adresy blokujemy komendą deny, np.:
deny from 111.222.333.444

Jeżeli chcemy ograniczyć dostęp wszystkim np. do jakiejś strony:
deny from all

Istnieje również możliwość udostępnienia stron tylko wybranym adresom:
deny from all
allow from 111.222.333.444
W pierwszej linii blokujemy dostęp wszystkim adresom, a w drugiej linii dajemy dostęp określonym adresom IP.
Często bardzo ważne jest nadanie kolejności przetwarzania wpisów, do tego celu używamy Order allow, deny. Taki zapis powoduje, ze najpierw przetwarzane są instrukcje odpowiedzialne za dostęp a następnie te za blokowanie. Rozważmy następujący przykład:
order allow, deny
deny from 111.222.333.444
deny from 555.666.777.888
allow from all
Jeżeli w takim przypadku nie użylibyśmy dyrektywy order allow, deny to najpierw zostały by zablokowane adresy 111.222.333.444 i 555.666.777.888 po to tylko żeby za chwilę zostały odblokowane dyrektywą allow from all.
Mamy również możliwość blokowania hostów z jakiejś określonej domeny. Robimy to tak samo jak powyżej, jednak zamiast adresu IP wpisujemy adres domeny, np.: deny jakas.domena.com.