Apr 13 2012

MySQL, zabicie uspionych polaczen usera

Wyszukanie uspionych polaczen usera

czlowiek@maszyna:~$ mysqladmin -uczlowiek -phaslo processlist | grep Sleep | grep user
| 91048 | user | localhost:57354 | baza | Sleep | 0   |     |     |
| 91049 | user | localhost:57355 | baza | Sleep | 0   |     |     |
| 91050 | user | localhost:57356 | baza | Sleep | 0   |     |     |

Zabicie polaczenia

czlowiek@maszyna:~$ mysqladmin -uczlowiek -phaslo kill 91050

I prosty skrypt do zabijania wielu polaczen naraz :)

#!/bin/bash

echo ""
echo "Killing all mysql processes for user '$1', mfc, yo man";
echo ""

for each in `mysqladmin -uczlowiek -phaslo processlist | grep Sleep | grep $1 | awk '{print $2}'`;
do
	echo "Killing process no. $each";
	mysqladmin -uczlowiek -phaslo kill $each;
done

echo ""
echo "Done bro"
echo ""

Apr 13 2012

Tomcat, captcha i brak awt

Tomcat i blad java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment pojawia sie podczas generowania grafik captcha za pomoca biblioteki awt, gdy uruchomimy serwer aplikacji z czystego tty. Mozna tego uniknac dodajac handlery awt do wirtualnej maszyny javy.

Dodatkowe ustawienia JAVA_OPTS w catalina.sh

JAVA_OPTS="-Djava.awt.headless=true"

Jul 15 2010

Macbook i problemy z siecia WiFi

Po tygodniu walczenia z konfiguracja sieci wifi w macbooku, opadly mi rece, gdy okazalo sie, ze ciagle zrywanie polaczenia jest kwestia sily sygnalu access pointa. Jak zwykle przypadek sprawil, ze “naprawilo sie” samo – prawie – trzeba bylo polazic po mieszkaniu.

Wiec, rozwiazanie problemu zrywania polaczenia sieci wifi w macu.

1. Na poczatek ustawiamy najslabsza mozliwa sile transmisji (Transmit Power) access pointa w naszym routerze (sekcja Wireless).
2. Odpalamy konsole na macu. Programy->Narzedzia->Terminal i zarzucamy haselko

czlowiek@maszyna:~$ ping www.google.com
PING www.l.google.com (209.85.135.103): 56 data bytes
64 bytes from 209.85.135.103: icmp_seq=0 ttl=50 time=90.361 ms
64 bytes from 209.85.135.103: icmp_seq=2 ttl=50 time=91.233 ms
64 bytes from 209.85.135.103: icmp_seq=3 ttl=50 time=82.742 ms
...
Request timeout for icmp_seq 15
Request timeout for icmp_seq 16
Request timeout for icmp_seq 17
...
64 bytes from 209.85.135.103: icmp_seq=17 ttl=50 time=850.113 ms
64 bytes from 209.85.135.103: icmp_seq=18 ttl=50 time=86.281 ms
64 bytes from 209.85.135.103: icmp_seq=19 ttl=50 time=77.392 ms
64 bytes from 209.85.135.103: icmp_seq=20 ttl=50 time=298.949 ms
64 bytes from 209.85.135.103: icmp_seq=21 ttl=50 time=374.277 ms

im mniej takich Request timeout’ow, tym lepiej ;) , lazimy, szukamy optymalnego sygnalu bez zaklocen, zmieniamy sile transmisji, bawimy sie antena i takie tam, a po 15 minutach uzyskamy satysfakcjonujaca nas wspolprace maca z nasza siecia WiFi.

Dziwna sprawa z tym mac’iem, poniewaz na htc g1 i lapku z linuxem dziala wysmienicie. Az chce sie powiedziec: a na linuxie dziala :)


Mar 19 2010

XML-RPC, wylaczenie gzipa w Apache dla IE6

W aplikacjach klient-serwer z konektem po XML-RPC, natrafimy na problem komunikacji, gdy klient uzywa przegladarki IE6. Wiec. Jezeli gzip’em sterujemy bezposrednio z Javki to przy generowaniu response musimy go wylaczyc. Jezeli Tomcat nakryty jest Apachem to nastepujaca dyrektywa jest konieczna aby klient stworzony, na przyklad we Flashu mogl poprawnie odebrac odpowiedz.

BrowserMatch \bMSIE\s6 no-gzip gzip-only-text/html

Oczywiscie wlaczamy mod deflate w Apache


Mar 19 2010

JS Call Later

Taki prosty skrypcik, umozliwiajacy wywolanie metody JavaScript z czasowym opoznieniem. Przydatne gdy chcemy na przyklad wyswietlic plywajacego diva 5 sekund po zaladowaniu strony, albo ukryc elementy widoku po 5 sekundach :)

Utworzmy klase obiektu dbajacego o wywolanie okreslonej metody po zadanym czasie a nastepnie sie zniszczy

loCallTimer = function(id, func, args, time)
{
	if (typeof(id) == "undefined") {
		return;
	}
	this.id = id;
	this.func = func || null;
	this.args = args || null;
	this.time = time || 1500;
	this.timer = null;
};
 
loCallTimer.prototype.suicide = function()
{
	this.stopTimer();
	eval("window.ct_" + this.id + " = null;");
};
 
loCallTimer.prototype.onTime = function()
{
	if (typeof(this.args) == "undefined" || this.args == null || this.args.length == 0) {
		this.func();
	} else {
		this.func.apply(this.func, this.args);
	}
	this.suicide();
};
 
loCallTimer.prototype.runTimer = function()
{
	this.stopTimer();
	this.timer = window.setTimeout("window.ct_" + this.id + ".onTime();", this.time);
};
 
loCallTimer.prototype.stopTimer = function()
{
	if (this.timer != null) {
		window.clearTimeout(this.timer);
		this.timer = null;
	}
};

Wyzwalacz

function callLater(func, args, time) {
    var id = (new Date()).getTime();
    var ct = eval("window.ct_" + id + " = new loCallTimer(" + id + ");");
    ct.func = func;
    ct.args = args;
    ct.time = time;
    ct.runTimer();
    return ct;
};

Testujemy
czytaj dalej