Archive for the 'flex' Category

AMFPHP i błąd 403 – Forbidden

Długo szukałem rozwiązania problemu, jaki pojawił się po przeniesieniu aplikacji AMFPHP z Windows na Linuksa. Skrypt gateway.php wywoływany z ‘palca’, czyli z URLa http://serwer/gateway.php odpowiadał prawidłowo. Browser już gorzej – nie wyświetlał prawego panelu z listą metod, a FireBug poproszony o przedstawienie odpowiedzi serwera napisał o błędzie 403 – Forbidden. Ciekawe, że w Google nie znalazłem nic konkretnego, na jednym tylko forum wskazówkę, że chodzi o prawa dostępu. To akurat było łatwe do wydedukowania. Śledztwo wykazało winnego – w skrypcie /core/shared/util/MethodTable.php, w linii 164 wywoływana jest funkcja touch($sourcePath) , gdzie $sourcePath wskazuje na nazwę uruchamianej usługi. Wystarczy ustawić Apaczowi prawo do zapisu pliku usługi (np. /services/Usluga.php) i od razu jest lepiej.

Piszą o AMFPHP na flashzone.pl.

wyrażenia regularne w AS3 i HTML

Przy okazji obsługi tekstu wielokolumnowego ze stylami CSS i automatycznym dzieleniem na strony i ramki tekstowe pojawił się problem HTMLa. Kiedy tekst przelewa się z jednej ramki (TextField) do drugiej, trzeba obsłużyć zamykanie tagów na końcu pierwszej ramki i otwieranie ich na początku drugiej. Ponieważ praca jest w trakcie, to na razie tylko tyle, że znalazłem stronę do testowania wyrażeń w AS3, zrobioną we fleksie.

A wyrażenia, jakimi zbieram z tekstu otwierające i zamykające tagi:

openTag     = /<\s*(\w+)([^>]*[^/])?>/gi;
closeTag    = /</(\w+)\s*>/gi;

formatowanie liczb w actionscripcie, numberFormat

Jeszcze nie dokończona, ale pomyślałem że się podzielę. Nie znalazłem zwartego sposobu na formatowanie liczb w Actionscript 3, a potrzebne mi było, więc jest. Trzeba dokończyć część poprzecinkową, zmienić parametry z lokalnych na zewnętrzne, ale z tym sobie każdy poradzi. Cała zabawa polega na wyszukaniu wzorca z 4 kolejnych cyfr i separatora, a na dobry początek dodajemy ten separator na końcu części całkowitej. Potem podmieniamy znaleziony kawałek na ciąg: cyfra, separator, 3 cyfry i szukamy znowu. Przeczesujemy w ten sposób liczbę od końca to początku, aż nie zostanie nic do dodania. Prawą, czyli ułamkową część trzeba potraktować zaokrąglaniem… (TODO :)

public static function formatNumber(n:Number):String
{
	var s:String = n.toString();
	var parts:Array = s.split('.');
	var result:String;
	var precision:int = 2;
	var separaTys:String = Lang.g.separaTys;
	var decimalPoint:String = Lang.g.decimalPoint;
	var pattern:RegExp = new RegExp("(\\d)(\\d\\d\\d)\\" + separaTys, '');
	parts[0] += separaTys;

	while(parts[0].search(pattern) > -1) {
		parts[0] = parts[0].replace(pattern, '$1' + separaTys + '$2' + separaTys);
	}
	parts[0] = parts[0].slice(0,-1);
	//if(parts.length < 2) parts[1] = '';
	//while(parts[1].length < precision) parts[1] += '0';
	//if(parts[1].length > precision)
	//TODO: obsługa części po przecinku

	return parts[0];
}

« Previous PageNext Page »