Apr 12 2010

SVN reconnect po przeinstalowaniu systemu

Jezeli juz z jakiegos dziwnego powodu, przeinstalujemy Linuxa, to pojawia sie kwestia ponownego podlaczenia uslug do juz istniejacych danych. Tak jest na przyklad z repo SVN, i tu nalezy …

Zainstalowac subversion

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

I teoretycznie tyle :) .
Jezeli zas, mamy problem z prawami – taki jakis Permission denied – to nalezy …

Grepnac proces SVNa i namierzyc wlasciciela (tu czlowiek)

czlowiek@maszyna:~$ ps faux | grep svnserve
czlowiek      29481  0.0  0.0   3336   800 pts/0    S+   20:45   0:00      \_ grep svnserve

Zmienic ownera repo (tu sciezka /home/svn/)

czlowiek@maszyna:~$ cd /home/svn
czlowiek@maszyna:/home/svn$ sudo chown czlowiek: -R *

I to raczej wystarczy. Mozna oczywiscie bawic sie z Apache, instalowac jakies moduly, itp… ale po co, jezeli chcemy skorzystac jedynie z Eclipse?


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


Mar 6 2010

JS dziedziczenie i override’y

Niby nie ma formalnie klas w JS, jednak mozemy stworzyc cos co mimo braku podzialu na obiekty prywatne, publiczne itd, bedzie wygladalo na klasy.

Na poczatek stworzmy nasza “klase” bazowa

// konstruktor klasy
BaseClass = function(name)
{
	this.name = name || "obj_" + (new Date()).getTime();
};
 
BaseClass.prototype.className = "BaseClass";
 
// instancja klasy BaseClass
var instanceOfBaseClass = new BaseClass();

w ten sposob mamy obiekt posiadajacy dwie wlasnosci name i className. Ta druga nie bedzie dziedziczona bezposrednio.

A teraz dziedziczenie.

DerivativeClass = function(name)
{
	this.super = BaseClass;
	this.super(name);
};
 
DerivativeClass.prototype = new BaseClass();
DerivativeClass.prototype.className = "DerivativeClass";
 
var instanceOfDerivativeClass = new DerivativeClass();

Po tym zabiegu instancja klasy DerivativeClass bedzie wygladac mniej wiecej tak

instanceOfDerivativeClass
	className = "DerivativeClass"
	name = "obj_1267912571913"
		super
			prototype
				className = "BaseClass"

Dzidziczenie? Jak najbardziej ;)

Teraz sprobujmy nadpisac funkcje bazowa init, na poczatek dodajmy ja
czytaj dalej


Mar 1 2010

RemotePad

Android jest coraz bardzie popularny, nie tylko dzieki gigantowi Google czy tez dziesiatkom firm, ktore wypuszczaja co chwile nowe modele smartow wlasnie z Androidem, ale tez dzieki programistom, ktorzy tworza na niego oprogramowanie. Postanowilem miec swoj malutki wklad w to przedsiewziecie, stad tez pomysl na RemotePad – maly programik umozliwiajacy zdalne sterowanie komputerem za pomoca sieci WiFi czy Bluetooth. Ok, po prostu touchpad, klawiatura, gamepad, pointer czy tez sterowanie mediami, np. VLC.

Wiem, ze konkurencja – Gmote, mkRemote czy RemoteDroid, ktory wlasnie zasial we mnie tworcze ziarenko – jest duza, ale sprobuje ;) . Ponizej pare screenow z powstajacej aplikacji.




Niedlugo do sciagniecia wersja beta z dzialajacym touchpadem.