A4Tech WOP-35 USB: Instalacja i konfiguracja pod Ubuntu

Od jakiegoś czasu jest sobie Techblog i do tej pory nie ma tam żadnego mojego wpisu. Pora to w końcu naprawić. Na pierwszy ogień niech idzie napisany przeze mnie jakiś czas temu poradnik opublikowany na polskim forum Ubuntu. Poradnik dotyczy instalacji i konfiguracji myszy A4Tech WOP-35 USB pod Ubuntu.


Trochę się dzisiaj namęczyłem przy skonfigurowaniu swojej myszy. Z pomocą tego forum [forum.ubuntu.pl]i googli udało mi się wykonać to co chciałem i postanowiłem podzielić się z Wami rozwiązaniem :).

Po standardowej instalacji mysz A4Tech WOP-35 działa w sposób powiedzmy "niekompletny":

  • Kółko znajdujące się wyżej (i bliżej środka) na myszce nie działa
  • Środkowy przycisk (ten w niższym kółku myszy) ma, przynajmniej u mnie, taką cechę, że strasznie ciężko się go przyciska. Zdecydowanie bardziej wolę używanie zamiast niego przycisku znajdującego się pod kciukiem.
  • Przewijanie stron odbywa się za pomocą kółka znajdującego się niżej (i dalej) co niezbyt pasuje mi do ręki. Znacznie wygodniejsze jest przewijanie wyższym kółkiem.

Aby poprawić działanie myszy należy wykonać następujące kroki (pierwsza część tego how-to pochodzi z UbuntuForums.org):

  1. Instalujemy evdev, który pozwala na obsługę urządzeń USB:

    sudo apt-get install xserver-xorg-input-evdev
    
  2. Upewniamy się, że mamy podłączoną mysz :)

  3. Odczytujemy informacje o naszej myszy:

    cat /proc/bus/input/devices
    

    W moim przypadku otrzymałem coś takiego

    I: Bus=0011 Vendor=0001 Product=0001 Version=ab41
    N: Name="AT Translated Set 2 keyboard"
    P: Phys=isa0060/serio0/input0
    S: Sysfs=/class/input/input0
    H: Handlers=kbd event0 
    B: EV=120013
    B: KEY=4 2000000 3802078 f840d001 f2ffffdf ffefffff ffffffff fffffffe
    B: MSC=10
    B: LED=7
    
    I: Bus=0010 Vendor=001f Product=0001 Version=0100
    N: Name="PC Speaker"
    P: Phys=isa0061/input0
    S: Sysfs=/class/input/input1
    H: Handlers=kbd event1 
    B: EV=40001
    B: SND=6
    
    I: Bus=0003 Vendor=09da Product=0006 Version=0001
    N: Name="A4Tech USB Optical Mouse"
    P: Phys=usb-0000:00:1f.2-2/input0
    S: Sysfs=/class/input/input2
    H: Handlers=mouse0 event2 ts0 
    B: EV=7
    B: KEY=7f0000 0 0 0 0 0 0 0 0
    B: REL=143
    

    Wytłuszczonym drukiem zaznaczyłem nazwę naszej myszy i handler jaki ją obsługuje. Jednak z tego co jest napisane na ww. stronie numer zdarzenia (eventX) czasami się zmienia wobec czego potrzebne jest ominięcie tego problemu.

  4. Tworzymy nowy plik

    sudo gedit /etc/udev/rules.d/19-local.rules
    

    i umieszczamy w nim następujący wpis:

    KERNEL=="event[0-9]*", SYSFS{../name}=="A4Tech USB Optical Mouse", NAME="input/event9"
    
    • Pogrubiona nazwa musi być taka sama jak odczytana w 3 punkcie.

    • Liczba w pogrubionym event9 musi wskazywać na zdarzenie, które jeszcze nie jest wykorzystywane. Aby znaleźć takie zdarzenie wykonujemy polecenie:

      ls /dev/input/
      

      i otrzymujemy:

      by-id  by-path  event0  event1 mice  mouse0  ts0
      

      Jak widać event9 jest wolne, więc można spokojnie go użyć.

  5. Wykonujemy zapasową kopię pliku xorg.conf:

    sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.bak
    
  6. Edytujemy zawartość pliku xorg.conf:

    sudo gedit /etc/X11/xorg.conf
    
  7. Znajdujemy w tym pliku sekcję dotyczącą naszej myszy. Prawdopodobnie będzie coś w stylu:

    Section "InputDevice"
            Identifier      "Configured Mouse"
    
    EndSection
    

    i zastępujemy następującym wpisem:

    Section "InputDevice"
            Identifier      "A4 Tech WOP-35"
            Driver          "evdev"
            Option          "CorePointer"
            Option          "Device" "/dev/input/event9"
            Option      "ZAxisMapping" "6 7"
            Option      "Buttons" "11"
    EndSection
    

    Numerek w eventX powinien być taki, jaki wybraliśmy w kroku 4.

  8. Upewniamy się, że pogrubiona nazwa powyżej zgadza się z pogrubioną nazwą w sekcji ServerLayout (poniżej):

    Section "ServerLayout"
            Identifier     "Default Layout"
            Screen      0  "ATI 3D" 0 0
            InputDevice    "Labtec Multimedia Keyboard"
            InputDevice    "A4 Tech WOP-35"
    EndSection
    
  9. Restartujemy cały komputer (nie tylko X'y, gdyż przy restarcie tylko X'ów nie zadziała nam to co zrobiliśmy w punkcie 4). Jeśli zrobiliśmy jakiś błąd i X'y nam nie wstaną to należy podmienić plik xorg.conf kopią zapasową wykonaną w punkcie 5:

    sudo cp /etc/X11/xorg.conf.bak /etc/X11/xorg.conf
    
  10. Jeśli wszystko poszło tak jak trzeba, to po restarcie komputera niedziałająca rolka powinna zadziałać. Jej działanie można sprawdzić np. przy pomocy programiku xev uruchamianego w konsoli. Jeśli przy kręceniu pokrętłami dostajemy komunikaty w stylu:

    ButtonPress event, serial 28, synthetic NO, window 0x2a00001,
        root 0x76, subw 0x0, time 3505706855, (177,2), root:(600,307),
        state 0x10, button 4, same_screen YES
    
    ButtonRelease event, serial 28, synthetic NO, window 0x2a00001,
        root 0x76, subw 0x0, time 3505706855, (177,2), root:(600,307),
        state 0x810, button 4, same_screen YES
    
    ButtonPress event, serial 28, synthetic NO, window 0x2a00001,
        root 0x76, subw 0x0, time 3505707680, (177,2), root:(600,307),
        state 0x10, button 5, same_screen YES
    
    ButtonRelease event, serial 28, synthetic NO, window 0x2a00001,
        root 0x76, subw 0x0, time 3505707680, (177,2), root:(600,307),
        state 0x1010, button 5, same_screen YES
    
    ButtonPress event, serial 28, synthetic NO, window 0x2a00001,
        root 0x76, subw 0x0, time 3505709942, (177,2), root:(600,307),
        state 0x10, button 6, same_screen YES
    
    ButtonRelease event, serial 28, synthetic NO, window 0x2a00001,
        root 0x76, subw 0x0, time 3505709942, (177,2), root:(600,307),
        state 0x10, button 6, same_screen YES
    
    ButtonPress event, serial 28, synthetic NO, window 0x2a00001,
        root 0x76, subw 0x0, time 3505710670, (177,2), root:(600,307),
        state 0x10, button 7, same_screen YES
    
    ButtonRelease event, serial 28, synthetic NO, window 0x2a00001,
        root 0x76, subw 0x0, time 3505710670, (177,2), root:(600,307),
        state 0x10, button 7, same_screen YES
    

    to znaczy, że jest wszystko oki :).

  11. Jeśli komuś wystarczy samo działanie pokręteł to może już w tym miejscu zakończyć :). Tak jak i kończy się przetłumaczony z grubsza poradnik, do którego linka podałem wcześniej :).

  12. Jeśli chcemy zamienić sobie miejscami swoje kółka, tak aby przewijanie strony odbywało się za pomocą wyższej (bliższej środka) rolki, to może teraz pokombinować z ustawieniami za pomocą xmodmap. Aby dokonać takiej zamiany należy wykonać polecenie:

    xmodmap -e "pointer = 1 2 3 6 7 5 4 8 9 10 11"
    
  13. Jeśli komuś przeszkadza środkowy przycisk w niższym (zewnętrznym) kółku i chciałby mieć go pod kciukiem, to może wykonać następujące polecenie:

    xmodmap -e "pointer = 1 8 3 4 5 6 7 2 9 10 11"
    
  14. Jeśli ktoś chce połączyć pkt. 12 z 13 (tak jak ja), to może wykonać polecenie:

    xmodmap -e "pointer = 1 8 3 6 7 5 4 2 9 10 11"
    
  15. Jeśli ktoś chce mieć jeszcze inną kombinację, to zapraszam do lektury man xmodmap :).

  16. No dobrze, polecenie z xmodmap działa ładnie, ale nie będziemy go wklepywać za każdym razem w konsoli po uruchomieniu X'ów :). W związku z tym, trzeba dodać je do autostartu. W przypadku XFCE4, którego ja używam robi się to poprzez stworzenie odpowiedniego pliku:

    gedit ~/.config/autostart/XModMap.desktop
    

    i wstawienie do niego następującej zawartości:

    [Desktop Entry]
    Encoding=UTF-8
    Version=0.9.4
    Type=Application
    Name=XModMap
    Comment=Zmienia kolejnosc przyciskow myszy
    Exec=xmodmap -e "pointer = 1 8 3 6 7 5 4 2 9 10 11"
    StartupNotify=false
    Terminal=false
    Hidden=false
    
  17. Zapisujemy plik, restart X'ów (ctrl+alt+backspace) i powinno wszystko działać :).


Jeśli ktoś ma jakieś uwagi co do tego poradnika lub coś mu nie zadziałało, to niech pisze w komentarzach :).

GVP -> AVI czyli jak ściągnąć i zapisać na dysku filmiki z Google Video

Dzisiaj stanąłem przed problemem zapisania na dysku kilku filmików z Google Video, który jak się okazało nie był taki trywialny jak na pierwszy rzut oka wydawałoby się. Podczas przeszukiwania zasobów internetu znalazłem kilka artykułów o tym jak sobie poradzić z tym problemem, jednak żaden ze sposobów nie okazał się skuteczny w 100%. W moim przypadku najlepszy sposób zadziałał na 1 z 3 filmików. Tak się jednak stało, że mam już gotowe do odtwarzania 3 pliki z 3 :). Dla potomności zostawiam więc poniższą instrukcję.

  1. Wyszukujemy w Google Video interesujący nas plik.
  2. Po otwarciu strony wybieramy "Pobierz dla Windows/Mac", anulujemy zapisywanie pliku Playera Google Video, wybieramy link "Ręczne pobieranie pliku video" i zapisujemy plik .gvp w wybranym przez nas miejscu.
  3. Otwieramy plik .gvp w dowolnym edytorze tekstowym i kopiujemy cały długi tekst pomiędzy "url:" a "docid:" do paska adresowego w przeglądarce. Tekst ten to adres pliku .avi zawierający pożądany przez nas materiał filmowy.
  4. Zapisujemy ten plik w dowolnie wybranym przez nas miejscu na dysku, a następnie próbujemy tak zapisany plik odtworzyć w dowolnym playerze. Jak się okaże, praktycznie każdy player wysypie się informując nas o nieokreślonym błędzie. Winne temu jest cyfrowe zabezpieczenie plików ściągniętych z Google Video polegające po prostu na dodaniu swojego własnego, niestandardowego nagłówka do wnętrza pliku .avi.
  5. Zaopatrujemy się więc w dowolny hex edytor. Ja do tego celu wykorzystałem darmowy Hex Editor XVI32.
  6. Otwieramy w hex edytorze ściągnięty przez nas zabezpieczony plik .avi. Naszym zadaniem będzie odszukanie nadmiarowego nagłówka i usunięcie go. Nagłówek ten ma długość 52 bajtów i zaczyna się od 13 bajtu pliku (włącznie). Ustawiamy się więc na 13 bajcie pliku, wybieramy polecenie "Block mark", ustawiamy się na 64 bajcie i znowu "Block mark". Gdy blok zostanie zaznaczony kolorem czerwonym wybieramy "Block delete". Po tak wykonanych operacjach początek naszego pliku powinien wyglądać następująco: RIFF(dalej 4 dowolne znaki)AVI(#20)LIST2(#01#00#00)hdrlavih8(i tu dalszy ciąg...). Wyedytowany plik zapisujemy na dysku.
  7. Cieszymy się z pięknie działającego pod każdym playerem pliku .avi :).

Nauka Javy

Tak powoli przymierzając się do zmiany działu w firmie, w której pracuję stwierdziłem, że wypadałoby w końcu coś trochę liznąć programowania w Javie. Podjąłem więc postanowienie, że od dzisiaj moje "wypadałoby" zamieniam w czyny. Eclipse już zainstalowane na pokładzie i powoli wgryzam się w tutoriale zawarte w systemie pomocy. Muszę przyznać, że nawet nie odrzuca na dzień dobry to środowisko i pierwsze kroki w nim są nader przyjemne.

Inna sprawa to jakieś dobre eBooki do poznania najpierw podstaw Javy, a potem czegoś bardziej zaawansowanego. Trzeba będzie się przekopać przez to wszystko co do tej pory zebrałem i wybrać coś wartościowego. A może ktoś zna jakąś wartą polecenia książkę dla javowego newbie? No dobra, może nie aż takiego newbie, coś tam kiedyś w C++ programowałem obiektowo. ;)

Puszka Pandory

Dzisiaj otworzyłem puszkę Pandory i... nie mogę się od niej oderwać :)

Ever since we started the Music Genome Project, our friends would ask:

Can you help me discover more music that I'll like?

Those questions often evolved into great conversations. Each friend told us their favorite artists and songs, explored the music we suggested, gave us feedback, and we in turn made new suggestions. Everybody started joking that we were now their personal DJs.

We created Pandora so that we can have that same kind of conversation with you.

Muszę przyznać, że jestem pod wrażeniem tego projektu. Po dodaniu kilku ulubionych wykonawców i połowie dzisiejszego dnia spędzonego na decydowaniu "lubię/nie lubię" Pandora coraz lepiej podpasowuje muzykę pod mój gust. Na początku wprawdzie dość sporo odrzucałem i to aż tak, że w pewnym momencie wyczerpałem limit odrzuconych utworów na godzinę i musiałem słuchać co mi zagrają. Teraz jednak już to się nie zdarza. I chyba faktycznie coś jest w tym genomie muzycznym skoro Pandora dwukrotnie mi już znalazła moich ulubionych artystów, których nie dodałem do listy - w sumie to tak dla mnie oczywistych, że od razu dopisywałem ich. Się nieźle uczy cwana bestia :)

Sprzęcior dotarł

Moje niedawno zamawiane maleństwo w końcu dotarło do mnie. Jest w końcu nadzieja, że zacznę w końcu coś praktycznego robić ze swoim dyplomem :)

A Poczcie Polskiej gratulujemy dostarczenia priorytetowej paczki w ekspresowym tempie 9 dni...

Nowy sprzęcik

Właśnie sobie zamówiłem trochę ciekawego sprzętu. Zobaczymy kiedy dotrze :)

Programator MultiProg Plus
Programator Multiprog PLUS (by Epsilon v. 2.12) [opis]

IC Program Board adaptor
IC Program Board adaptor [opis]

Karta Fun7 (ISO)
Karta Fun7 (ISO) z 256 kB EEPROM'u i wypasionym prockiem Atmel AT90S8515A na pokładzie [specyfikacja AT90S8515A]

Przepis na wygranie biletów na koncert Stinga

Oto oryginalny, sprawdzony przepis na uzyskanie niewielkim nakładem pieniężnym biletów na koncert Stinga w Warszawie:
  1. Bierzemy telefon znajdujący się w sieci Idea i przygotowujemy sobie na nim gotowego do wysłania pod numer 71501 SMS'a z tekstem "STING".
  2. Ściągamy i uruchamiamy programik TClock i za jego pomocą synchronizujemy zegarek komputerowy z np. ntp.task.gda.pl.
  3. Robimy pierwszą próbę wysyłając przygotowanego wcześniej SMS'a o pełnej godzinie.
  4. Jeśli trafiliśmy i otrzymaliśmy SMS'a zwrotnego z gratulacjami wygrania zaproszeń to mamy problem z głowy i przechodzimy do punktu 6.
  5. Przed każdą pełną godziną wysyłamy SMS'a konkursowego za każdym razem wysyłając go o 3 sekundy wcześniej przed pełną godziną niż poprzednim razem. Ciąg godzin wysyłania może wyglądać na przykład tak: 12:00:00, 12:59:57, 13:59:54, 14:59:51, itd. Jeśli za którymś razem otrzymamy SMS'a zwrotnego, na którym godzina wysłania jest xx:59 to znak, że cofnęliśmy się za daleko od pełnej godziny ale że jesteśmy już blisko i należy zacząć dodawać po 1-2 sekundzie. Punkt ten powtarzamy do skutku czyli do otrzymania SMS'a o treści: "Gratulujemy, otrzymujesz podwójne zaproszenie na koncert STINGA! Dowiedz się, gdzie możesz odebrać bilety - wyślij SMS o treści INFO pod numer 71501." W moim przypadku była to godzina wysłania: 16:59:45 więc można spróbować wziąć ją jako godzinę odniesienia i od analogicznej zacząć testy.
  6. Wchodzimy na stronę Orange.pl i zamiast sugerowanego wysyłania SMS'a znajdujemy sami miejsce gdzie możemy odebrać nasze podwójne zaproszenie.
  7. Odwiedzamy ze swoim telefonem oraz dowodem osobistym znaleziony punkt Orange, ucinamy sobie pogawędkę z dwiema paniami, w trakcie której wysyłają one na nasz telefon kod potwierdzający, spisują nasze dane z dowodu, a następnie wręczają z uśmiechem dwa bilety.
  8. Spotykamy się 24 września w Warszawie na Służewcu. ;)

Algorytm przetestowany w praktyce. Kumpel na w sumie 9 prób na dwóch komórkach zdobył dwa podwójne zaproszenia, ja za 6 razem robiąc próby na jednej czyli koszt biletów w moim przypadku to 7.32 PLN (3.66 za sztukę)

Powodzenia ;)

Optimus keyboard

Optimus keyboard - nieeeeech mi ktoś kuuuupi! :D

Spell Checker

Spell Checker by logeen jest całkiem interesującym i pożytecznym hackiem do forum phpBB zwłaszcza dla tych, którzy sobie cenią poprawność ortograficzną. Dzisiaj uruchomiłem go na forum Blehny i po testach mogę stwierdzić, że funkcjonalność zarówno od strony użyszkodnika jak i administratora jest więcej niż zadowalająca ;) Polecam ;)

Bot ożył :D

Dzisiaj miałem okazję zdziwić się patrząc na swój roster. Jakiś czas temu zainstalowałem sobie bota GG i sobie go testowałem pisząc jakieś tam proste skrypty do niego. Jednak od kilku miesięcy nie zaglądałem do niego i nie logowałem się na posiadany numer. Dzisiaj sobie przeglądam i "lekkie" zdziwienie jak zobaczyłem moją "Kasię" dostępną przy nieodpalonym bocie. Jak się okazało po vcard moja Kasia przemianowała się na Gosię i już nie będzie reagować na /help i inne takie, gdyż tak jakby się ożywiła :D

Zaczynam się obawiać, że dzięki polityce przyznawania nieaktywnych numerków w GG nowym osobom ma szansę ziścić się wizja z pewnego filmu :D

SubEdit

Jak to mówią: "lepiej późno niż wcale" :) Dzisiaj oglądałem sobie filmik, do którego nie było nierozjeżdżających się napisów. Po 10 minutach oglądania z przesuwaniem napisów co minutę o sekundę szlag mnie trafił i wyłączyłem film. I wziąłem się za szukanie porządnego edytora filmów.

Pierwsze na co się natknąłem to zastępstwo dla mojego wysłużonego VPlayera czyli SubEdit. Ściągnąłem, zainstalowałem i włączyłem. Chwila rozeznania w interfejsie i edytor napisów odpalony. Jak zobaczyłem jego możliwości to rewelacja: bardzo proste przesuwanie czasów napisów, a przede wszystkim rewelacyjny przelicznik FPS. Nie wiem kto stworzył napisy ale jakoś nie pasowały pod żadnego przyjętego fpsa ale dla SubEdita to żaden problem. Ustawiamy prawidłowy czas napisów dla klatki z początku filmu, przesuwamy na jakiś końcowy napis, spisujemy nr klatki na filmie i nr klatki w napisach z odpowiadającą klatce kwestią, odejmujemy nr początkowej klatki od obu końcowych klatek, otrzymane wyniki dzielimy przez siebie i otrzymujemy współczynnik, który wpisujemy do konwertera fps, 1 klik i gotowe - można oglądać film bez nerwów :)

O takich przyjemnościach jak przyjemne ustawianie wielkości napisów, przesunięcia ich w pionie za pomocą suwaczków, nierzucający się w oczy pasek postępu filmu wyświetlany w górnym lewym rogu czy też w końcu zobaczenie pochyłej czcionki, a nie krzaczków typu {y:i} to już nie mówię. A i film można wyłączyć bez obaw. Jak się go odpali ponownie to ruszy prosto z miejsca, w którym się przerwało oglądanie.

No dobra, starczy tego zachwycania się. VPlayer już odinstalowany, tym którzy go nadal używają polecam przesiąść się na SubEdita bo nie ma porównania ;)

Maleństwo

ETA: Jun 13, 2005 6:00 PM

Wprawdzie im to ETA trochę nie wyszło i rano kurier mnie obudził ale wcale się na niego nie obraziłem :D Maleństwo rozebrane leży sobie już u mnie wygodnie na łóżku :D Teraz tylko pod prysznic, zjeść dobre śniadanko, zrobić porządek na biurku i zaczynamy zabawiać się z maleństwem ]:-)

Dawać mi to :)

Deborah Lavoie of CIRCUIT CELLAR sent Bartlomiej Szymanski an International Economy Package.

This shipment is scheduled to be sent on 07JUN05.

To maleństwo:

z mikroprocesorem ARM Philipsa LPC2136 (256kB flasha :D)na pokładzie niedługo sobie przyjedzie do mnie. W sam raz zabawka na wakacje :D

Pręgierz mode

Wazelina dla Microsoftu za to, że swoim Visual Studio 2005 wzbudził u mnie chęć posiadania DVD. A jak już chęć na DVD to trzeba myśleć przyszłościowo i od razu z nagrywarką :) Hmm, czy M$ ma jakąś umowę z LiteOnem?

Piętno dla majowej pogody, w której temperatura oscyluje w zakresie <-2;30> st. Celsjusza przy czym dzisiaj mamy wartość maksymalną co w połączeniu z duchotą w mieście spowodowało, że po kilku minutach spaceru miałem okazję nauczyć się pływać kraulem we własnym podkoszulku.

Wazelina dla producentów płyt DVD-R i to, że miałem okazję się zdziwić dzisiaj, że płytka TDK kosztuje 1.80 PLN.

Piętno dla jedynego słusznego w Polsce banku szytego na miarę XXI wieku "w soboty otwarte od 9-13". Oczywiście przeczytałem tę jakże uroczą wywieszkę o 13:30... Jakby się ktoś nie domyślił to o PKO BP chodzi.

Wazelina dla producenta piwa "Jurand" za bardzo ładną panią na billboardzie, przez którą to nie zauważyłem, że mi się zielone światło zapaliło :)

Wynik:
Wazelina - 3 : 2 - Piętno
Nie jest źle :)

Beta Expierience Kit

Wyjątkowo dzisiaj ucieszyłem się, że przerwano mi grę w "scrabble" i że musiałem lecieć na portiernię po pocztę. Kilka dni temu zamówiłem, a dzisiaj przyszła przesyłka z czterema płytkami DVD Microsoft Visual Studio 2005 Beta 2. Tak przy okazji, właśnie, DVD, czy ja czasem nie powinienem sobie skombinować jakiegoś napędu odpowiedniejszego...?

Tak nawiasem, to strasznie nieporęczne urządzonko do składania podpisów miał kurier. Rysik owszem, tyle, że podpisywało się na specjalnej podkładce, a podpis na ekranie LCD się pojawiał. Nie przyznałbym się do tego podpisu nigdy w życiu :P

PS. Podziękowania dla Pirveliego za namiary :)

Mniam

"Thanks for your interest in the 2005 M16C Renesas Design Contest.

Your request for a SKP32C84 has been received and is being processed by the Renesas Import/Export compliance group."

Moje cacuszko za free już sobie do mnie jedzie. Będzie pysznie :] A teraz zaczynamy marzyć o 5000$ nagrody :D

Pozdrawiam, Wasz Renesasujący

Zawiodłem się...

Mozillą... Fanatyczny użytkownik zawiódł się Mozillą... Moja ulubiona przeglądarka nie obsługuje DHTML... Pół wczorajszego dnia spędzone na próbach zrobienia laborki, drugie pół na próbach dojścia co jest grane i dlaczego nie działczy... A dzisiaj rano współspacz radośnie odpala instrukcję do tegoż samego ćwiczenia, a tam prostokącik pięknie zwęża się i poszerza, zwęża się i poszerza, zwęża... Oczywiście odpala pod badzIEwiem... Kilka minut grzebania po opcjach no i niestety... nie włączę tego u mnie. Z miną posępną udałem się na poszukiwania badzIEwia w zakątkach dysku, zrobiłem sobie skrót w QL, będę robić laborkę... Tiaaa, na badzIEwiu będę robić...

Pozdrawiam, Wasz Zdruzgotany-Fanatyczny