Własna strona błędu 404 w Kohanie
Ostatnio odkryłem prawdziwy "pałer" frameworków. Zacząłem od CodeIgnitera. Całkiem fajny, w większości miejsc daje wolną rękę programiście. Jednak nie wygląda na to, żeby miał być dalej tworzony. Spróbowałem Kohanę, jedną (to ona jest?
) z jego forków.
Jako że dosłownie zakohałem się w Kohanie, będę co jakiś czas umieszczał tutaj jakieś porady.
Porada na dziś:
Własna strona błędu 404 w Kohanie
Wbrew pozorom nie jest to takie trudne! Kohana (tak jak CodeIgniter) ma zaimplementowany system tak zwanych Hooków/Eventów (zdarzeń). Mogę zmienić standardową funkcję obsługi błędu 404, i podmienić ja na moją własną.
Na początku musimy się upewnić, czy mamy w naszej aplikacji włączone hooki. W tym celu otwieramy plik application/config/config.php, i prawdopodobnie w linijce 75 będzie znajdować się poniższy kod:
$config['enable_hooks'] = FALSE;
Zmieniamy FALSE na TRUE.
Następnie tworzymy nowy plik application/hooks/error_404.php. Kohana automatycznie wykonuje wszystkie pliki z katalogu application/hooks/, więc nie musimy go jakoś specjalnie włączać ![]()
W tym pliku zadeklarujemy klasę przechwytywania błędu (error_404), oraz podmienimy standardową funkcję obsługi błędu 404, na naszą własną z klasy error_404. Nasza funkcja będzie uruchamiać inny, podany w stałej, kontroler.
<?php
class error_404 {
const error_controller = 'Error404'; // Nazwa kontrolera który chcemy wykonywać podczas błędu. (jeżeli mamy kontroler np. w pliku application/controllers/errors/Error404.php, wpisujemy tutaj errors/Error404)
public static $page = '';
public static function show_404() { // nasza funkcja przechwytująca błąd 404
header("HTTP/1.0 404 Not Found"); // wysyłamy nagłówek ze statusem Not Found.
if(Router::$current_uri != self::error_controller) { // zabezpieczenie, przed zapętleniem się strony, gdy podany kontroler obsługi błędu nie zostanie znaleziony
self::$page = Router::$current_uri; // zapisujemy adres brakującej strony, więc możemy w kontrolerze strony błędu wyświetlić jej adres
Router::$current_uri = self::error_controller; // Przekierowujemy na nasz kontroler
Router::setup(); // i ponownie inicjalizujemy klasę Router.
} else {
Kohana::show_404(self::$page); // gdy nasz kontroler obsługi błędu nie istnieje, wyświetlamy standardową tablicę z Kohany, z adresem strony wcześniej zapisanej do zmiennej $page.
}
}
}
Event::replace('system.404', array('Kohana', 'show_404'), array('error_404', 'show_404')); // Podmieniamy standardową funkcję obsługi eventu "system.404", na naszą.
?>
Potem musimy zdefiniować nasz kontroler w pliku application/controllers/Error404.php. Nie będzie on się różnił specjalnie od innych, więc nie będę się tutaj specjalnie rozpisywał:
<?php
class Error404_Controller extends Controller {
public function index() {
echo '<html><body><b>404 Not Found</b><small> - '.error_404::$page.'</small><br /><br /><small>Powered by KohanaPHP</small></body></html>';
}
}
?>
Stay tuned, następne tutoriale już niedługo!
Rada na baardzo wolne ładowanie stron w UPC (DNS’y)
Mam internet 2mb/s od UPC. Pobieranie pojedynczych plików trwa krótko (prędkość pobierania na granicach 400kb/s), ale strony internetowe ładują się bardzo długo...
W moim przypadku problemem były dns'y Chello/UPC. Są one straaszliwie wolne. Wystarczyło ustawienie dns'ów np. na te darmowe od Google'a (ip 8.8.8.8 i 8.8.4.4)
Zmiana adresów DNS pod Linuxem
Gdy mamy zainstalowane Avahi:
- Otwieramy plik /etc/avahi/avahi-daemon.conf
- W sekcji [publish] dopisujemy "publish-dns-servers=[ip pierwszego dns'u], [ip drugiego dns'u]
dla DNS'ów Google'a, wpis "publish-dns-servers" z sekcji [publish] w /etc/avahi/avahi-daemon.conf będzie wyglądać tak:
publish-dns-servers=8.8.8.8, 8.8.4.4
W innych wypadkach:
- Otwieramy plik /etc/resolv.conf
- Wykomentowujemy istniejące wpisy "nameserver .." znakiem "#" (np. "#nameserver 4.5.8.9")
- Dopisujemy swoje adresy DNS w formie "nameserver [ip dns'u]"
I tak dla dns'ów Google'a plik /etc/resolv.conf będzie wyglądał tak:
nameserver 8.8.8.8 nameserver 8.8.4.4
“Nie jestem twoim chłopcem” – o prostytucji w internecie
Ostatnio poczułem się w internecie jakbym był żywym towarem na sprzedaż. A to za sprawą naszego rodzimego Facebooka - naszej-klasy.
Otóż pierwotnie założenia i wykonanie n-k pokrywały się z moimi oczekiwaniami. Nie było zbędnych funkcji, większych ograniczeń. Jednak z czasem portal społecznościowy, za przeproszeniem, zeszmacił się. Zaczęło przybywać reklam, np. takie wbudowane Allegro. Po co to komu?!
Uznałem, że w dobie Facebooka i świetnego Twittera nie potrzebuję konta na naszej-klasie i je usunąłem. Doszedłem do wniosku, że jestem towarem na sprzedaż. Ja jestem dla serwisu, nie serwis dla mnie. Z kolei serwis dla kasy. Dziękuję, postoję.
Z innej beczki: Harry Potter does Bananaphone!