root (hd0,1) linux /vmlinuz root=/dev/sda1 initrd /initrd.img bootPo tym zabiegu wszystko pięknie śmiga... :-)
2011-11-26
[linux] Boot z Grub'a
Miałem dziś małą zabawę z instalacją Ubuntu na laptopie Toshiby. To archaiczny sprzęt, na którym instalacja systemu to prawdziwa męka. Po wielu próbach udało mi się zainstalować na nim Ubuntu - jednak zainstalowałem system na dysku zewnętrznym przez USB a później włożyłem dysk do czeluści tego laptopa. :-) Oczywiście system nie wstał ale odpalił się Grub, w którym wystarczyło wpisać:
2011-07-28
[jQuery] Tablica z wynikami wyciągnięta za pomocą $.post
$.post umożliwia (oprócz zwykłych ciągów znaków) odebranie całej tablicy z danymi - bardzo fajna sprawa dzięki której dziś zrobiło mi się lżej na sercu. :) Żeby odebrać taki "array" a nie tylko "string" wystarczy po argumentach funkcji $.post dodać znacznik "json":
W pliku test.php z którego pobieramy dane wystarczy zamiast zwykłego
Żródło: http://api.jquery.com/jQuery.post/
$.post("test.php", { "func": "getNameAndTime" },
function(data){
console.log(data.name); // John
console.log(data.time); // 2pm
}, "json");
W pliku test.php z którego pobieramy dane wystarczy zamiast zwykłego
dać
echo "zwykly ciag znakow";
echo json_encode(array("name"=>"John","time"=>"2pm"));
Żródło: http://api.jquery.com/jQuery.post/
2011-06-21
[svn] Can't find a temporary directory: Internal error
Jeśli pojawia Ci się przy svn update komunikat w stylu:
Can't find a temporary directory: Internal error
to znaczy, że możesz mieć problem z miejscem na dysku na serwerze - radzę sprawdzić to w pierwszej kolejności (np. komendą df -h). :-)
Can't find a temporary directory: Internal error
to znaczy, że możesz mieć problem z miejscem na dysku na serwerze - radzę sprawdzić to w pierwszej kolejności (np. komendą df -h). :-)
2011-06-19
[unix][curl] Download wielu plików z zabezpieczonego katalogu
Jeśli nie masz uprawnień do przeglądania zawartości katalogu www - tzn. otrzymujesz komunikat typu:
a do tego znasz mniej więcej nazewnictwo plików znajdujących się w katalogu to jest szansa, że uda Ci się pobrać zawartość. Wszystko dzięki curl - wystarczy, że wpiszesz z linii poleceń:
Przyjąłem tutaj, że pliki w katalogu xyz mogą mieć nazwy typu img28_C.jpg albo img47_A.jpg. Curl za pomocą powyższej linijki kodu ściągnie tego typu pliki bez większego problemu - fantastyczna sprawa. :-)
Forbidden
You don't have permission to access /images/xyz/ on this server.
Apache Server at www.tajemny-host.com Port 80
a do tego znasz mniej więcej nazewnictwo plików znajdujących się w katalogu to jest szansa, że uda Ci się pobrać zawartość. Wszystko dzięki curl - wystarczy, że wpiszesz z linii poleceń:
curl http://www.tajemny-host.com/images/img[00-99]_[A-Z].jpg -o img#1_#2.jpg
Przyjąłem tutaj, że pliki w katalogu xyz mogą mieć nazwy typu img28_C.jpg albo img47_A.jpg. Curl za pomocą powyższej linijki kodu ściągnie tego typu pliki bez większego problemu - fantastyczna sprawa. :-)
2011-06-16
[jQuery] wiele elementów do jednego eventa
Istnieje możliwość podpięcia kilku elementów do jednego zdarzenia - można zrobić to mniej więcej w taki sposób:
var idleka_search = $("#idleka_search");
var idkorg_search = $("#idkorg_search");
var idfdm_search = $("#idfdm_search");
var combined = idleka_search.add(idkorg_search);
combined = combined.add(idfdm_search);
$(combined).change(function(){ ... });
2011-06-01
[php] rawurlencode() i [js] decodeURIComponent()
Chcąc zakodować jakiś string w PHP i poprawnie go odkodować przy użyciu JavaScriptu proponuję zastosować wbudowane funkcje: rawurlencode() i decodeURIComponent().
urlencode() nie do końca mi wystarczyło - funkcja zmienia na przykład spację na "+" zamiast na %20 (przez co trudniej taki string odkodować wbudowanymi funkcjami w js). decodeURI natomiast nie odkodowało np. znaków %21 (!) czy %40 (@).
Tak więc rawurlencode() i decodeURIComponent() to dobre połączenie - przynajmniej dla mnie. :-)
urlencode() nie do końca mi wystarczyło - funkcja zmienia na przykład spację na "+" zamiast na %20 (przez co trudniej taki string odkodować wbudowanymi funkcjami w js). decodeURI natomiast nie odkodowało np. znaków %21 (!) czy %40 (@).
Tak więc rawurlencode() i decodeURIComponent() to dobre połączenie - przynajmniej dla mnie. :-)
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.php
Odchudzony 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.
2011-03-28
[eclipse] Subversion Native Library Not Available
Instalując plugin Subclipse do Eclipse'a natknąłem się na błąd:
Do rozwiązania tego problemu pod Mint'em wystarczy:
W pliku eclipse.ini (znajduje się w katalogu eclipse) należy po linii -vmargs dopisać:
Failed to load JavaHL Library.
These are the errors that were encountered:
no libsvnjavahl-1 in java.library.path
no svnjavahl-1 in java.library.path
no svnjavahl in java.library.path
java.library.path = /usr/lib/jvm/java-6-sun-1.6.0.24/jre/lib/amd64/server:/usr/lib/jvm/java-6-sun-1.6.0.24/jre/lib/amd64:/usr/lib/jvm/java-6-sun-1.6.0.24/jre/../lib/amd64:/usr/lib64/xulrunner-addons:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
Do rozwiązania tego problemu pod Mint'em wystarczy:
1. Zainstalowanie libsvn-java
sudo apt-get install libsvn-java
2. Edycja eclipse.ini
W pliku eclipse.ini (znajduje się w katalogu eclipse) należy po linii -vmargs dopisać:
-Djava.library.path=/usr/lib/jniNa koniec wystarczy zrestartować Eclipse i wszystko powinno śmigać.
2011-03-25
Własne aliasy w bash'u
Linux Mint jak każda dystrybucja GNU/Linux'owa umożliwia tworzenie aliasów. To fantastyczny wynalazek dzięki któremu można w prosty sposób stworzyć sobie skróty długich, często używanych komend terminalowych. Na przykład zamiast wpisywania czegoś takiego:
Co należy zrobić żeby stworzyć sobie taki skrót?
Dodajemy w .bashrc kod:
W katalogu domowym tworzymy plik .bash_aliases i umieszczamy w nim własne aliasy - na przykład:
Po tych fantastycznych i banalnych dwóch krokach otwieramy nowy terminal, wpisujemy
można dzięki aliasom zdefiniować sobie skrót w stylu:
ssh -p 666 m4rc1no5@host
goto_host
Co należy zrobić żeby stworzyć sobie taki skrót?
Po pierwsze .bashrc
Dodajemy w .bashrc kod:
Plik .bashrc powinien znajdować się w katalogu domowym. Jesli tam go nie ma to trzeba go utworzyć i wpisać tam kod znajdujący się wyżej.
#wczytanie aliasow
if [ -f ~/.bash_aliases ]; then
source ~/.bash_aliases
fi
Po drugie .bash_aliases
W katalogu domowym tworzymy plik .bash_aliases i umieszczamy w nim własne aliasy - na przykład:
alias goto_host='ssh -p 666 m4rc1no5@host'
Po tych fantastycznych i banalnych dwóch krokach otwieramy nowy terminal, wpisujemy
i cieszymy się z dobrodziejstw jakie dają nam aliasy. :-)
goto_host
2011-03-11
Eclipse dla PHP
Postanowiłem ponownie spróbować "podejść" do Eclipse'a dla PHP (Eclipse PDT 2.2.0). Tym razem bardziej przypadł mi do gustu i po kilku chwilach zabawy nie jestem tak zupełnie zrażony - wręcz podoba mi się. :-)
Zawsze brakowało mi możliwości zaznaczania bloku tekstu (Block Selection Mode) - jak się okazuje w nowej wersji tego softu jest już taki bajer (dostępny po wciśnięciu Ctrl+Shift+A) co bardzo mnie ujęło. Nie jest to tak fajnie zrobione jak bym chciał ale nie ma co narzekać.
Na pierwszy rzut oka współpraca Eclipse'a z SVN'em też działa dobrze - wystarczyło pobrać plugin Subclipse.
Być może wcześniej też wszystko śmigało tylko byłem źle nastawiony do zmian? ;-)
Zawsze brakowało mi możliwości zaznaczania bloku tekstu (Block Selection Mode) - jak się okazuje w nowej wersji tego softu jest już taki bajer (dostępny po wciśnięciu Ctrl+Shift+A) co bardzo mnie ujęło. Nie jest to tak fajnie zrobione jak bym chciał ale nie ma co narzekać.
Na pierwszy rzut oka współpraca Eclipse'a z SVN'em też działa dobrze - wystarczyło pobrać plugin Subclipse.
Być może wcześniej też wszystko śmigało tylko byłem źle nastawiony do zmian? ;-)
Subskrybuj:
Posty (Atom)