Jul
15
2010
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
3 komentarzy | tagi: macbook, network, wifi | wpis w Mac, Net, Web
Mar
19
2010
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
1 komentarz | tagi: ajp, apache, Flash, komunikacja, tomcat, XML | wpis w Flex/Air, Konfiguracja, Web
Mar
19
2010
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
brak komentarzy | tagi: JS, Web | wpis w JS/AJAX, Web
Mar
6
2010
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
brak komentarzy | tagi: dziedziczenie, JS, Web | wpis w JS/AJAX, Web
Feb
28
2010
Niewielka sprawa, jednak zabrala mi troche czasu. Ten przypadek wymagal dociagania skryptow JS w zaleznosci od zaladowanego kontentu (On Demand JS) lecz dostarczane obiekty mialy nazywac sie identycznie. Wazne bylo, aby metoda getAnswer obiektu Question zwracala odpowiednio sformatowane dane, w zaleznosci od wyswietlonego kontentu. Silnik ladowany byl po wejsciu na strone wraz z zawartoscia zawierajaca obiekty JS, logiczne wiec, ze parser je wczytal i zarejestrowal. Wymienny kontent zawieral override’y zaladowanych obiektow, ktore niestety nie rejestrowaly sie automatycznie.
Mamy wiec cos podobnego
Question = function()
{
this.answer = null;
{ body }
};
Question.prototype.getAnswer = function()
{
if (this.answer != null) {
return this.answer;
} else {
{ body }
}
};
w kazdej dynamicznie dostarczanej zawartosci z ta roznica, ze { body } roznie formatowalo dane
Aby dzialalo to poprawnie, nalezy po wczytaniu kontentu AJAX’em zarejestrowac wczytane obiekty, a mozna to zrobic tak
function reloadScripts(id) {
// pobieramy obiekt zawierajacy override'y
var obj = document.getElementById(id);
if (obj) {
// wyciagamy tagi potencjalnie zawierajace skrypty JS
var scripts = obj.getElementsByTagName("script");
for (var i = 0; i < scripts.length; i++) {
script = scripts[i].innerHTML;
// rejestrujemy JS'y
eval(script);
}
}
};
lub tak, jezeli dostarczamy jedynie JS’y
eval(ajax.xmlHttp.responseText);
Jak masz inny pomysl na rozwiazanie tego problemu … nie krepuj sie, daj komentsa
brak komentarzy | tagi: AJAX, DHTML, JS, XHTML | wpis w JS/AJAX, Web