Jan 27 2010

Ku..wa, znowu ten IE

Nie moge, po prostu nie moge.
Miala to byc prosta modyfikacja, ciach ciach, to wyrzucamy, tutaj dodajemy. Gotowe, jeszcze maly tescik…, silnik Gecko… w porzadku, silnik WebKit… no problems, IE – tu zawsze syf, ale przy takich zmianach wszystko musi byc spoko…, o ku..wa, to nie jest mozliwe, font na pol ekranu – co jest grane? Menus->Widok->Rozmiar tekstu, >>zonk<<, jest Srednia – wiec jest ok – nie wnikam, ze Rozmiar tekstu i Srednia jakos do siebie nie pasuja.
Easy, ommm… wyczysc cache’a… nic, restart IE… nic, ku..wa hardcore. Ommm… dobra, to zawsze pomagalo Menus->Narzedzia->Opcje internetowe->Zaawansowane->Resetuj i jeszcze raz Resetuj, cos pomielil i twierdzi, ze musi sie zresetowac, spoko dam rade, restart. Otwieram ponownie… f4ck, musze zrobic przerwe…….

Ochlonalem, odpalam na innym kompie z Winda, gowno, ten sam effect. Revers tego co zrobilem… nie uwierzycie… XHTML 1.0 Transitional, prosty ku..wa tag, <h2 />, nie bo IE szuka jeb..ego konca bloku </h2>.

Wymiekam, wszedzie dziala ale IE wie lepiej

<h2 /> != <h2></h2>

wbrew temu co twierdzi validator.w3.org


Jan 13 2010

WPtouch Theme

WPtouch Theme – aby strony generowane przez WordPressa wygladaly profesjonalnie w iPhone czy Android OS :)


Obslugiwani klienci: android, aspen, blackberry9500, blackberry9530, cupcake, dream, incognito, iphone, ipod, opera mini, webmate, webos


Dec 10 2009

Apache i Tomcat – konektor AJP

Bylo juz o konfiguracji kontenera Apache-Tomcat, pojawil sie tez opis mixa Apache-PHP-MySQL, pozostaje jednak, jeszcze pare innych waznych konfiguracji, tj. Tomcat Workers (load balancing) czy konektor AJP, ktorym dzis sie zajmiemy.

W skrocie, konektor AJP sluzy do polaczenia dwoch punktow webowych protokolem AJP, np. serwer Apache na jednej maszynie oraz Tomcat na drugiej. Mozemy ukryc w ten sposob serwer Tomcat przed bezposrednim dostepem z zewnatrz – na przyklad.

1. Instalujemy Apache (na maszynie 192.168.1.1)

czlowiek@maszyna:~$ sudo apt-get install apache2

Domyslna instalacja na apache2-mpm-worker

czlowiek@maszyna:~$ apache2ctl -V
Server version: Apache/2.2.12 (Ubuntu)
Server built:   Nov 12 2009 22:51:51
Server's Module Magic Number: 20051115:23
Server loaded:  APR 1.3.8, APR-Util 1.3.9
Compiled using: APR 1.3.8, APR-Util 1.3.9
Architecture:   32-bit
Server MPM:     Worker
  threaded:     yes (fixed thread count)
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/worker"
...

nie dziala najlepiej w konektorze AJP, wiec instalujemy apache2-mpm-prefork, ktory jest moze mniej wydajny, ale za to bardziej stabilny.

2. Instalujemy apache2-mpm-prefork

czlowiek@maszyna:~$ sudo apt-get install apache2-mpm-prefork

Tak jest poprawnie

czlowiek@maszyna:~$ apache2ctl -V
...
Server MPM:     Prefork
...
 -D APACHE_MPM_DIR="server/mpm/prefork"
...

3. Wlaczamy modul proxy_ajp

czlowiek@maszyna:~$ sudo a2enmod proxy_ajp

4. Konfigurujemy modul

czlowiek@maszyna:~$ sudo nano /etc/apache2/mods-enabled/proxy.conf

wlaczamy requesty i zmieniamy prawa

ProxyRequests On
Allow from all

5. Konfigurujemy konekta, otwieramy konfig apache

czlowiek@maszyna:~$ sudo nano /etc/apache2/sites-enabled/000-default

i dopisujemy linie

ProxyPass /examples/servlets/ ajp://192.168.1.5:8009/examples/servlets/

w wezle

<VirtualHost *:80>

gdzie adres ip 192.168.1.5 bedzie maszyna z zainstalowanym serwerem Tomcat.

Wiec, na drugiej maszynie konfigurujemy Apache-Tomcat. Tym razem pobieramy gotowa paczke – jezeli jednak instalacja, to zapraszam tutaj.

6. Pobieramy najnowsza paczke (na maszynie 192.168.1.5)

czlowiek@maszyna2:~$ sudo -i
root@maszyna2:~$ wget http://ftp.tpnet.pl/vol/d1/apache/tomcat/tomcat-6/v6.0.20/bin/apache-tomcat-6.0.20.tar.gz

7. Ekstraktujemy i kopiujemy

root@maszyna2:~$ tar xzvf apache-tomcat-6.0.20.tar.gz -C /tmp
root@maszyna2:~$ mkdir /usr/local/tomcat6 && cp -R /tmp/apache-tomcat-6.0.20/* /usr/local/tomcat6

8. Testujemy Tomcata

root@maszyna2:~$ wget -q http://localhost:8080 -O /tmp/atest && cat /tmp/atest | grep -i "Apache Tomcat"
    <title>Apache Tomcat</title>
...

lub wpisujemy adres (http://localhost:8080) w ulubionej przegladarce

tomcat-start-page

9. Konfigurujemy Tomcata – otwieramy server.xml i upewniamy sie, ze ponizszy konektor jest odkomentowany.

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

Teoretycznie wszystko dziala poprawnie, ale na wszelki wypadek restarty i testy

root@maszyna2:~$ /etc/init.d/apache2 restart
root@maszyna2:~$ /usr/local/tomcat6/bin/shutdown.sh
root@maszyna2:~$ /usr/local/tomcat6/bin/startup.sh

Po wpisaniu adresu http://192.168.1.1/examples/servlets/ dostaniemy strone z przykladami servletow na serwerze Tomcat z maszyny o ip 192.168.1.5

Oczywiscie jezeli port 8009/tcp na maszynie 192.168.1.5 jest zamkniety to trzeba go otworzyc dla polaczen z serwerem Apache zainstalowanym na maszynie 192.168.1.1


Nov 18 2009

Password Generator

Pojawilo sie nowe narzedzie w sekcji Tools. Password Generator umozliwia generowanie zarowno prostych hasel alfa-numerycznych, jak i bardziej zlozonych zawierajacych znaki specjalne. Ciekawa moze okazac sie mozliwosc definiowania wlasnego ciagu znakow, na podstawie ktorego zostanie wygenerowane haslo. Moga to byc limitowane znaki specjalne, badz znaki narodowe takie jak ĄĆĘŁŃÓŚŹ ąćęłńóśź ÄÖÜ äöü. Program umozliwia wygenerowanie jednorazowo do 100 hasel o dlugosci do 32 znakow.

passwd-gen

Zobacz jak to dziala


Nov 8 2009

Raportowanie bledow strony klienta

Back-end aplikacji webowej, mozna kontrolowac przegladajac raporty i logi, lecz nijak ma sie to do front-endu wyswietlanego po stronie klienta. Nie dowiemy sie czy i kiedy wystapi blad, dopoki jakis nawiedzony klient nie zwymysla nam do sluchawki, chyba, ze mamy 105 srodowisk testowych, na ktorych mozemy sprawdzic kazda funkcjonalnosc aplikacji.

I tutaj nasuwa sie pytanie, czy nie ma innej mozliwosci?
Sa, a to jedna z nich, dzieki asynchronicznym zapytaniom, raport o bledzie klienta trafi do back-endu, i zapisany zostanie, do bazki czy pliku logow.

Przechwytywanie bledow

1. Dodajemy wymagane pliki bibliotek

<script type="text/javascript" src="http://www.losoft.org/blog/download/ajax/loajax_v1.1.js"></script>

plik mozna pobrac z dzialu Download, albo zamiast klasy loAJAX, linkujemy wlasnego wrappera ajax.

2. Tworzymy metode akcyjna zdarzenia window.onerror

// on/off powiadomienie klienta o bledzie
var suppressErrors = true;
// nowy obiekt ajax
var ajax = new loAJAX(this, "http://www.losoft.org/blog/examples/ajax/errorreport.php", null, AJAX_POST);
// akcja zdarzenia onerror
function errorReport(msg, url, lineNumber)
{
	ajax.reset();
	ajax.addParam("msg", msg);
	ajax.addParam("url", url);
	ajax.addParam("lineNumber", lineNumber);
	ajax.request();
 
	if (suppressErrors) {
		return true;
	}
	alert("Error occurred: " + msg + "\nURL: " + url + "\nLine Number: " + lineNumber);
};

3. Podpiecie akcji

window.onerror = errorReport;

Jak mamy juz gotowa metode, to teraz … czytaj dalej