- Tworzymy katalog tumblr w application/vendor
- Instalujemy Composera (będąc w katalogu tumblr)
curl -sS https://getcomposer.org/installer | php
- Instalujemy biblioteki, z których korzysta tumblr.php
php composer.phar install
- Wykorzystujemy w naszym projekcie nowo powstały autoloader
require_once(APPPATH.'vendor/tumblr/vendor/autoload.php');
Pokazywanie postów oznaczonych etykietą kohana. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą kohana. Pokaż wszystkie posty
2014-02-21
[php][kohana] Instalacja tumblr.php za pomocą Composer'a
Instalacja biblioteki tumblr.php w projekcie opartym na frameworku Kohana za pomocą Composera:
2014-02-18
[kohana] Korzystanie z zewnętrznych bibliotek
Dobrym zwyczajem jest instalowanie zewnętrznych bibliotek w katalogu application/vendor. Np w przypadku klienta Tumblr API (tumblr.php) będzie to katalog application/vendor/tumblr.
Kohana nie wczytuje automatycznie zewnętrznych bibliotek - trzeba je wczytać samodzielnie np za pomocą:
Kohana nie wczytuje automatycznie zewnętrznych bibliotek - trzeba je wczytać samodzielnie np za pomocą:
include Kohana::find_file('vendor/library', 'file_name');
2013-02-24
[kohana][php] Upgrade z wersji 3.1 do 3.3
Oczywiście jak to przy zmianie wersji frameworka kohana (po dłuższym czasie) jest niezła zabawa z dostosowaniem aplikacji. Zmian jest sporo - poniżej przedstawiam te, które udało mi się zarejestrować szybko przerabiając swoją własną stronkę, która wcześniej stała na wersji 3.1:
Zmienia się wielkość liter katalogów i plików w aplikacji. Na przykład zamiast
application/classes/model/flickr.php
musi być
application/classes/Model/Flickr.php
Jeśli ktoś używał odpalał ten moduł w bootstrap.php to musi z tego zrezygnować.
Należy w bootstrap.php (np po i18n) wpisać coś takiego:
Trzeba zmienić w pliku konfiguracyjnym 'type' z 'mysql' na 'MySQL'.
źródło: http://stackoverflow.com/questions/13043412/error-when-using-auth-with-orm-driver-kohana-3-3-0
Przestaje istnieć - teraz zamiast dawnego:
Wygląda teraz mniej więcej tak u mnie:
Zamiast:
Zamiast:
Zamiast:
To tyle w mocno telegraficznym skrócie... wg mnie są to dobre zmiany! :)
Więcej informacji: http://kohanaframework.org/3.3/guide/kohana/upgradingguide/kohana/upgrading
Zmiana wielkości liter
Zmienia się wielkość liter katalogów i plików w aplikacji. Na przykład zamiast
application/classes/model/flickr.php
musi być
application/classes/Model/Flickr.php
Brak modułu kohana_cache
Jeśli ktoś używał odpalał ten moduł w bootstrap.php to musi z tego zrezygnować.
Cookie salt
Należy w bootstrap.php (np po i18n) wpisać coś takiego:
Cookie::$salt = 'Your-Salt-Goes-Here';źródło: http://forum.kohanaframework.org/discussion/8873/cookie-salt-problem/p1
Konfiguracja MySQL
Trzeba zmienić w pliku konfiguracyjnym 'type' z 'mysql' na 'MySQL'.
źródło: http://stackoverflow.com/questions/13043412/error-when-using-auth-with-orm-driver-kohana-3-3-0
Odczyt danych z pliku konfiguracyjnego
Przestaje istnieć - teraz zamiast dawnego:
$config = Kohana::config('nazwa_pliku_konfiguracyjnego');
plik konfiguracyjny odpalamy następująco:$config = Kohana::$config->load('nazwa_pliku_konfiguracyjnego');
Main request
Wygląda teraz mniej więcej tak u mnie:
$request = Request::factory();
$response = $request->execute()->send_headers(TRUE);
if($response->body()){
$total = array(
'{memory_usage}' => number_format((memory_get_peak_usage() - KOHANA_START_MEMORY) / 1024, 2).'KB',
'{execution_time}' => number_format(microtime(TRUE) - KOHANA_START_TIME, 2).' s.'
);
echo $response->body(strtr((string) $response, $total));
}
Redirect
Zamiast:
$this->request->redirect(Url::base(FALSE, FALSE).'start');mamy teraz:
$this->redirect(URL::base(FALSE, FALSE) . 'start');źródło: http://stackoverflow.com/questions/13088601/kohana-errorexception-fatal-error-call-to-undefined-method-requestredirec
Query builder
Zamiast:
$count = $q_count->select('count("*") AS ilosc')->group_by('tytul','tresc')->execute()->get('ilosc');
mamy teraz:$count = $q_count->select(array(DB::expr('COUNT(*)'),'ilosc'))->group_by('tytul','tresc')->execute()->get('ilosc');
źródło: http://kohanaframework.org/3.3/guide/database/query/builderParametry funkcji action
Zamiast:
public function action_index($kod=''){}
mamy teraz:public function action_index(){ $kod = $this->request->param('kod'); }
To tyle w mocno telegraficznym skrócie... wg mnie są to dobre zmiany! :)
Więcej informacji: http://kohanaframework.org/3.3/guide/kohana/upgradingguide/kohana/upgrading
2012-12-22
[kohana] Zapis do logów
Kohana::$log->add(Log::WARNING, $msg);To krótkie polecenie zapisuje nam dowolne informacje do katalogu logs - mała rzecz a cieszy. :) Oczywiście komunikaty mogą mieć różne statusy - nie tylko WARNING (np. ERROR, NOTICE, EMERGENCY itp.).
2011-04-20
[Kohana] Upgrade z 3.0.x na 3.1.x
Upgrade mojej strony (marceen.pl) opartej na Kohanej nie obył się bezboleśnie niestety. Framework cały czas mocno się rozwija a ja - przyznaję się bez bicia - ostatnio nie śledziłem zmian jakie w nim zaszły. :-)
Dziś postanowiłem na własnej skórze zbadać jak mocno się zmieniło to środowisko. I jak się okazuje jest kilka zmian:
W wersji 3.0 obsługa wyjątku odbywała się w bootstrap.php i wyglądała mniej więcej tak:
W wersji 3.1 wygląda to zupełnie inaczej. W bootstrap.php dodajemy jedynie jedną linijkę kodu (koniecznie za Kohana::init()):
Już na przykładzie powyżej widać optymalizację kodu w bootstrap. Zmiany w tym pliku są większe - część kodu związana z uruchomieniem została przeniesiona do pliku index.php. W bootstrap tylko konfigurujemy śrosowisko - podejście bardzo fajne. :-)
W wersji 3.0 miałem informację (pod zdjęciami) o tym jaki jest czas generowania strony. W związku ze zmianami kawałek kodu który za to odpowiadał nieco trzeba było zmienić i przenieść do pliku index.php:
To zmiany, przez które dziś przebrnąłem - szerszą informację o zmianach można znaleźć tutaj.
Dziś postanowiłem na własnej skórze zbadać jak mocno się zmieniło to środowisko. I jak się okazuje jest kilka zmian:
Wywołanie widoku
//3.0 $this->request->response = $view; //3.1 $this->response->body($view);
Wyłapywanie błędu 404
W wersji 3.0 obsługa wyjątku odbywała się w bootstrap.php i wyglądała mniej więcej tak:
try {
$request->execute();
} catch (Exception $e) { // if its not valid, it gets caught here
$request->status = 404;
$request->response = View::factory('errors/404');
}
W wersji 3.1 wygląda to zupełnie inaczej. W bootstrap.php dodajemy jedynie jedną linijkę kodu (koniecznie za Kohana::init()):
set_exception_handler(array('Kruzar_Exception_Handler', 'handle'));
oraz tworzymy klasę Kruzar_Exception_Handler:
class Kruzar_Exception_Handler
{
public static function handle(Exception $e)
{
switch (get_class($e))
{
case 'HTTP_Exception_404':
$response = new Response;
$response->status(404);
$view = View::factory('errors/404');
$view->title = 'ERROR 404 - nie ma takiej strony';
$view->message = $view->title;
$view->message .= $e->getMessage();
echo $response->body($view)->send_headers()->body();
return TRUE;
break;
default:
return Kohana_Exception::handler($e);
break;
}
}
}
i umieszczamy w /application/classes/kruzar/exception/handler.phpOdchudzony bootstrap.php
Już na przykładzie powyżej widać optymalizację kodu w bootstrap. Zmiany w tym pliku są większe - część kodu związana z uruchomieniem została przeniesiona do pliku index.php. W bootstrap tylko konfigurujemy śrosowisko - podejście bardzo fajne. :-)
Execution Time
W wersji 3.0 miałem informację (pod zdjęciami) o tym jaki jest czas generowania strony. W związku ze zmianami kawałek kodu który za to odpowiadał nieco trzeba było zmienić i przenieść do pliku index.php:
//zamiast
echo Request::factory()
->execute()
->send_headers()
->body();
//piszemy coś takiego:
$request = Request::factory();
$request->execute();
if ($request->response()->body())
{
$total = array(
'{memory_usage}' => number_format((memory_get_peak_usage() - KOHANA_START_MEMORY) / 1024, 2).'KB',
'{execution_time}' => number_format(microtime(TRUE) - KOHANA_START_TIME, 2).' s.');
$request->response()->body(strtr((string) $request->response(), $total));
}
echo $request->response()->send_headers()->body();
To zmiany, przez które dziś przebrnąłem - szerszą informację o zmianach można znaleźć tutaj.
2010-04-18
[kohana] cache'owanie
Pisząc poprzedni wpis do bloga zauważyłem, że mój View Large On Black potrzebuje około 2 sekund na wyrenderowanie strony:

W tym czasie aplikacja trzy razy łączy się z api flickr'a aby pobrać dane wyświetlanych zdjęć.
Dane te są stałe więc można tu z powodzeniem wykorzystać cache'owanie.
W kohanej aby dodać dane do cache'a wystarczy:
Odczyt danych wygląda natomiast w ten sposób:
Jeśli nie podamy $lifetime:
Po umieszczeniu w cache'u danych pobieranych z flickr'a udało się zaoszczędzić ok. 2 sekundy podczas każdego przeładowania i renderowanie strony wynosi ok. 0,02 sekundy.

W tym czasie aplikacja trzy razy łączy się z api flickr'a aby pobrać dane wyświetlanych zdjęć.
Dane te są stałe więc można tu z powodzeniem wykorzystać cache'owanie.
W kohanej aby dodać dane do cache'a wystarczy:
Kohana::cache($nazwa_zmiennej,$dane);
Odczyt danych wygląda natomiast w ten sposób:
gdzie $lifetime oznacza czas życia zmiennej cache.
$wynik = Kohana::cache($nazwa_zmiennej,null,$lifetime);
Jeśli nie podamy $lifetime:
to aplikacja będzie uwzględniać dane, które trafiły do cache'a w ciągu ostatnich 60 sekund.
$wynik = Kohana::cache($nazwa_zmiennej);
Po umieszczeniu w cache'u danych pobieranych z flickr'a udało się zaoszczędzić ok. 2 sekundy podczas każdego przeładowania i renderowanie strony wynosi ok. 0,02 sekundy.
2010-04-10
[kohana] czas renderowania strony
Aby wyświetlić w aplikacji - wykonanej za pomocą frameworka kohana - czas renderowania strony.
W pliku index.php należy dodać linijkę:
W pliku application/bootstrap.php zamiast:
należy wpisać:
I na koniec w widoku wystarczy dodać np:
W pliku index.php należy dodać linijkę:
define('KOHANA_START_TIME', microtime(TRUE));
W pliku application/bootstrap.php zamiast:
echo Request::instance()
->execute()
->send_headers()
->response;
należy wpisać:
$request = Request::instance($_SERVER['PATH_INFO']);
$request->execute();
if($request->response){
$total = array(
'{execution_time}' => number_format(microtime(TRUE) - KOHANA_START_TIME, 5).' s.');
$request->response = strtr((string) $request->response, $total);
}
echo $request->send_headers()->response;
I na koniec w widoku wystarczy dodać np:
Czas renderowania strony: {execution_time}
2010-01-19
[kohana] Usuwanie index.php
Gdy chcesz usunąć z Kohana index.php a zawiodą sposoby przedstawione tutaj i będzie wyświetlał Ci się w dalszym ciągu "Interval Server Error" to spróbuj wpisać
W razie problemów zajrzyj jeszcze do httpd.conf i zobacz czy masz coś w tym stylu:
W nowszych wersjach Apache'a nie ma już pliku httpd.conf tak więc tę zmianę musimy zrobić bezpośrednio w pliku apache2.conf.
sudo a2enmod rewriteZrestartuj Apache'a i spróbuj ponownie - u mnie zadziałało.
W razie problemów zajrzyj jeszcze do httpd.conf i zobacz czy masz coś w tym stylu:
<Directory "/var/www/*"> Order allow,deny Allow from all AllowOverride All </Directory>
W nowszych wersjach Apache'a nie ma już pliku httpd.conf tak więc tę zmianę musimy zrobić bezpośrednio w pliku apache2.conf.
Subskrybuj:
Posty (Atom)