środa, 11 maja 2011

Obsługa tablic asocjacyjnych w JS

Przeglądanie tablicy asocjacyjnej w JS może sprawić pewne kłopoty. Nie działa właściwość length, więc nie da się zastosować zwykłej pętli for. Natomiast przeglądanie za pomocą konstrukcji typu for(n in a), oprócz właściwych pozycji tablicy, zwraca również inne właściwości obiektu klasy Array.
Przykład:

var a = [];
a["a"] = "A";
a["b"] = "B";
a["c"] = "C";
for(n in a){
    console.log('a("' + n + '") = ' + a[n]);
}
W wyniku wykonania powyższego kodu, na konsoli (w Firebugu) ujrzymy mniej więcej takie coś:

a("a") = A
a("b") = B
a("c") = C
a("contains") = function (v) {
    if (v == null) {
        return false;
    }
    for (var i = 0; i < this.length; i++) {
        if (this[i] == v) {
            return true;
        }
    }
    return false;
}
Widać, że oprócz wartości wpisanych do tablicy, przetwarzana jest również właściwość "contains", która jest wewnętrzną właściwością obiektu klasy Array.
Cóż robić więc?
No więc jeśli mamy do czynienia z tablicą asocjacyjną, wystarczy zadeklarować ją w następujący sposób:

var a = {};

Uruchomienie powyższego przykładu z wprowadzoną taką zmianą, spowoduje wyświetlenie już tylko tych wartości, o które nam chodzi.

niedziela, 8 maja 2011

Włączanie skrolowania TrackPointem w Netbeans

Bardzo uciążliwą cechą skrolowania środkowym przyciskiem TrackPointa jest to, że nie działa w niektórych aplikacjach. Na przykład w NetBeans IDE.
Na szczęście można sobie z tym w prosty sposób poradzić.
  1. Musimy odnaleźć plik tp4Table.dat. Zależnie od wersji znajduje się w różnych katalogach. U mnie jest to c:\Program Files\Apoint2K\tp4table.dat
  2. Otwieramy go w edytorze tekstowym (na prawach administratora)
  3. Odnajdujemy w pliku następujący wiersz:
    *,*,javaw.exe,*,*,*,WheelStd,1,9
  4. kopiujemy go i wklejamy poniżej, a następnie zamieniamy napis javaw na netbeans
  5. zapisujemy plik i od razu możemy się cieszyć skrolem w NetBeans
Na początku pliku tp4table.dat jest wyjaśnienie poszczególnych ustawień. Analogicznie należy postępować w przypadku problemów ze skrolem w innych aplikacjach