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
(docelowo pisane na Kohanę 2.3.4, ale na 2.4 też powinno działać)
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
Nowy redaktor
Doszedł do nas nowy (już bez-blogowy ;>) redaktor - N3T. Widać że chłopak ma ambicje, więc czekajcie na nowe artykuły!
Forum TastyCode Wystartowało!
W końcu TastyCode będzie portalem, o ogólnie pojętej tematyce "Programistycznej". Już założyliśmy forum. Może kiedyś (w daleekiej przyszłości ;>) zapowiadany skrypt zostanie uruchomiony jako pod-dział serwisu.
Planujemy z N3T'em przekształcić ten blog, w blog pisany przez "społeczność".
Już mamy dużo pomysłów na to, jak urozmaicić i wyróżnić nasze forum. Czeka nas wiele zmian w przyszłym czasie, więc pozostaje mi powiedzieć te dwa słynne słowa: Stay Tuned!
Konfigurowanie serwera Soldata z lini poleceń
W dedykowanym serwerze Soldata (Linux) jest kilka (nie dużo - 3
) opcji konfiguracyjnych które można zmienić przy uruchamianiu serwera:
./soldatserver -p [PORT] -l [LIMIT_GRACZY] --password [HASŁO]
I tutaj w informacji zwracanej przez ./soldatserver jest błąd - w oryginale mamy 2 razy opcję -p zamiast --password jako hasło i -p jako port
ps. Wesołego jajca ;>
GHacking: Wyszukiwanie katalogów na Wrzucie
GoogleHackingu początek
Czasem chcemy się poszukać katalog o danej nazwie, lub posiadający jakiś fragment w nazwie (normalna wyszukiwarka tego nie obsługuje
)
Z pomocą przyjdzie nam wujek Google.
Oto baardzo proste "zdanie" które umożliwi nam wyszukanie list katalogów:
site:wrzuta.pl/katalog intitle:"[co szukamy]"
Więc.. Jeżeli chcemy poszukać katalogów z Mozartem (w nazwie) wpisujemy do wujka Gugla:
site:wrzuta.pl/katalog intitle:"Mozart"
Enjoy.
Restarting wifi driver on NIT’s
After using aircrack-ng suite on my N810 (with original wifi drivers) I can't use wifi. I must restart my tablet. I don't like it ;p
Here is a small shell script which reloads wifi kernel module, and initializes it:
#! /bin/sh rmmod cx3110x insmod /mnt/initfs/lib/modules/2.6.21-omap1/cx3110x.ko chroot /mnt/initfs /usr/bin/wlan-cal
You simply put it in any directory, and add "executable" bit by running chmod +x file
(i suggest not putting it on cards, cause' they are formatted with FAT, but in FAT there aren't bits like "executable"
)]
Instalacja Ubuntu/Debiana/innych dystrybucji Linuxa na przenośnych pamięciach flash
W nagrodę za GP konkursu młodych talentów "Kontrasty" cały nasz chór dostał po 2-gigowym "Flashcard'zie" firmy pqi. Takie to cacko.
Mam już 2 pendrive'y, które dobrze mi służą, więc postanowiłem postawić sobie na tym flash'u jakąś przenośną dystrybucję Linuxa.
Jako że N3T ostatnio dostał 15 płytek z Ubuntu Karmic Koala od Ubuntu Shipit, postanowiłem spróbować odpalić tam "Koalę".
Po krótkim grzebaniu w internecie znalazłem bardzo ciekawe narządzie o nazwie UNetbootin. Umożliwia ono łatwą instalację różnych dystrybucji na przenośne dyski.
Jak zainstalować Ubuntu/inną dystrybucję Linuxa na przenośnej pamięci USB?
0. Na początku uprzedzam że stworzony w ten sposób pendrive nie będzie przechowywał zmian, będzie się poprostu zachowywał jak płyta LiveCD. Niedługo napiszę tutorial o przygotowywaniu Ubuntu na Pendrive w trybie Persistent (z zapisywaniem zmian
)
1. Instalujemy program UNetbootin (nie będę tutaj się rozpisywał, u mnie wystarczyło apt-get install unetbootin)
2. Po wpisaniu w konsoli (lub w "Alt+F2") "unetbootin" po chwili ukazuje nam się główne okno programu.
3. Wybieramy sobie dystrybucję, którą chcemy zainstalować na naszym pendrive'ie. Domyślnie w programie dostępne jest kilkanaście dystrybucji, w różnych wersjach.
4. Wybieramy wersję dystrybucji którą chcemy zainstalować (ja wybrałem Ubuntu 9.10 Karmic Koala wersję LiveCD) oraz upewniamy się czy na dole okna mamy wybraną dobrą pamięć na której chcemy zainstalować nasz system.
5. Klikamy "OK" i czekamy aż system się zainstaluje...
Przed uruchomieniem musimy upewnić się czy mamy w BIOS ustawione uruchamianie z USB
Using LED on N810 Tablets in Python
I think that in Poland we don't have much NIT developers, and... Here we go - first post in English ![]()
I was looking for an API in Python for manipulating color (and brightness ofc
) of builtin LED on my N810. I drilled through some sites, and i found that FlipClock (which is written in Python) uses LED in some cases. I downloaded it, and found that you can set color of LED with these two simple functions.
Manipulating LEDs rely on writing to virtual files in /sys/ directory.
import time
# This function changes color of LED
def setLED(r,g,b):
val = "%X:%X:%X" % (r, g, b)
f = open('/sys/devices/platform/i2c_omap.2/i2c-0/0-0032/color', 'w')
f.write(val)
f.close()
# This functions sets LED mode ("run" - default mode. "direct" - in this mode you can change color of LED)
def setLEDMode(mode):
f = open('/sys/devices/platform/i2c_omap.2/i2c-0/0-0032/', 'w')
f.write(mode)
f.close()
# using:
# 1. First we need to set mode to "direct"
setLEDMode('direct')
# 2. Now set color of LED
setLED(255, 255, 255) # no, it won't be really white, blue led is too strong, so it will be like lightblue =)
# Let it sleep for a while
time.sleep(5)
# 3. Set everything to 0, so next time we won't see ugly "blink" of last color.
setLED(0, 0, 0)
# 4. Return to "default mode" (run)
setLEDMode('run')
Let's do some fireworks on your N810! ![]()
I'm really sure, that it should work also on N800 and family (770 have led?
)
PS. I have just found out strange thing - when I close keyboard while LED is on it automagicaly turns off
I must try it ![]()
PS2. And also when i lock keypad... It's not a big deal, when you are just blinking LED, but when you must turn it on for a long time, you can set color and sleep for 0.5sec in loop instead of setting color and waiting Xsec.
Edit!
Today I found out this post on some forum: http://forum.mobile-review.com/showpost.php?s=936a897dcf4ba22136a9fb1fc0904dd9&p=2120483&postcount=441
So on N900 (Maemo 5) LED is controlled in similar way, expect thing, that path pattern is like this:
/sys/class/led/[some unique/unknown ID]/brightness
I don't have N900, so i can't try it (and i don't know if my mother and GTranslate translated this post correctly
)
I think that it should work
Początek przygody z Maemo
Tak! Przyszła! Nokia N810!
Aktualnie jej piękność już mnie ogarnela w 100 procentach. Klawiatura, chociaż mała, bardzo dobrze leży w dłoniach.
Prace nad TastyCode powoli idą na przód. Już udało mi się ogarnąć klasę bbcode wookieb razem z geshi.
Ps. Jednak ta klawiatura rządzi. Tak długiego posta na TX pisałbym z pół godziny, a tu proszę - max. 5 minut



