Osobiste, szkoła etc. »

[27 lipca, 2006 | Dodaj komentarz | Poziom: 0 ]

Widzę - ktos zadzwonił z numeru +48 xx xxx xx xx. Co robię? Oddzwaniam.

Oto rozmowa:

- Halo.
- Ktoś dzwonił z tego numeru...
- No i co z tego.
- Chciałem się dowiedzieć, czy to do mnie, czy może to była pomyłka.
- Dlaczego?

Czy to zapowiedź kariery w pomocy technicznej?

Osobiste, szkoła etc., Programowanie (IDE, UML, Wzorce...), Programowanie (PHP, Java...), System (GNU, BSD, Windows...) »

eclipse, antlr i subeclips)." rel="owl:sameAs"> Ja już tego nie rozumiem (o eclipse, antlr i subeclips).
[24 lipca, 2006 | eclipse, antlr i subeclips).">2 komentarze | Poziom: 0 ]

Subclipse (instalowane kilkakrotnie z strony domowej) nie chcę działać - nie znajduje swoich klas (eclipse wie, że jest to zainstalowane, a nie uruchamia).

Czytaj dalej »

Programowanie (PHP, Java...), System (GNU, BSD, Windows...) »

[22 lipca, 2006 | Dodaj komentarz | Poziom: 0 ]

Potrzebowałem zamienić w plikach java-pkg-2-2 na java-pkg-2

find /var/db/pkg/ -exec perl -pi -e 's@java-pkg-2-2@java-pkg-2@' \;

Zajmuje to jednak trochę czasu (dla każdego pliku jest wywoływany perl).

Dlatego postarałem się o taką konstrukcję (tymczasową) :

# find /var/db/pkg/ | xargs grep java-pkg-2-2 /var/db/pkg/dev-java/rhino-1.5.5-r2/rhino-1.5.5-r2.ebuild:inherit ... /var/db/pkg/dev-java/antlr-2.7.5-r2/antlr-2.7.5-r2.ebuild:inherit ... /var/db/pkg/dev-java/servletapi-2.3-r2/servletapi-2.3-r2.ebuild:inherit ... /var/db/pkg/dev-java/libreadline-java-0.8.0-r1/libreadline-java-0.8.0- ... /var/db/pkg/dev-java/servletapi-2.4-r2/servletapi-2.4-r2.ebuild:inherit ... /var/db/pkg/dev-java/bsh-2.0_beta4/bsh-2.0_beta4.ebuild:inherit ... /var/db/pkg/dev-java/ant-core-1.6.5-r13/ant-core-1.6.5-r13.ebuild:inherit ...

Od razu widać, że nie potrzeba nam zawartości. Pozatym 2 procesy nie będą korzystały z tego pliku jednocześnie, więc możemy korzystać z Mapped I/O (wywołanie systemowe mmap(2)

# find /var/db/pkg/ | xargs grep --mmap java-pkg-2-2 | sed 's@:.*@@g;' /var/db/pkg/dev-java/rhino-1.5.5-r2/rhino-1.5.5-r2.ebuild /var/db/pkg/dev-java/antlr-2.7.5-r2/antlr-2.7.5-r2.ebuild /var/db/pkg/dev-java/servletapi-2.3-r2/servletapi-2.3-r2.ebuild /var/db/pkg/dev-java/libreadline-java-0.8.0-r1/libreadline-java-0.8.0-r1.ebuild /var/db/pkg/dev-java/servletapi-2.4-r2/servletapi-2.4-r2.ebuild /var/db/pkg/dev-java/bsh-2.0_beta4/bsh-2.0_beta4.ebuild /var/db/pkg/dev-java/ant-core-1.6.5-r13/ant-core-1.6.5-r13.ebuild

I przekazujemy to do perla:

# find /var/db/pkg/ | xargs grep --mmap java-pkg-2-2 | sed 's@:.*@@g;' \ | xargs perl -pi -e 's@java-pkg-2-2@java-pkg-2@'

I nie mamy już czasu zaparzyć kawy... (Pierwsze zajmowało strasznie długo)

Programowanie (PHP, Java...) »

[22 lipca, 2006 | Dodaj komentarz | Poziom: 0 ]

Czasami nachodzi mnie ochota na myślenie o NIL'u - połączeniu cech Javy, Rubiego i C++. Do cech należałyby:

  • Wielodziedziczenie
  • Dynamiczne interfejsy (zaraz wytłumaczę o co mi chodzi)
  • Rozszerzanie klas (jak w Ruby) i możliwość mrożenia
  • Zaawansowana kontrola dostępu
  • Możliwość korzystania z Proxy
  • Możliwość korzystania z klas .Net i Javy (opcjonalnie)
  • Typy generyczne

Czytaj dalej »

Ideologie i wierzenia, Osobiste, szkoła etc., System (GNU, BSD, Windows...), Technologie W3C (XHTML, CSS...) »

[16 lipca, 2006 | Dodaj komentarz | Poziom: 0 ]

Chciałem skomentować wpis w linuxnews. Podaje adres email i w odpowiedzi dostaje coś takiego http://linuxnews.pl:8080/auth/confirm.php?login=xxxxxx&id=xxxxxx. Oczywiście port 8080 jest zblokowany. W tej chwili jestem załamany - muszę znaleść specjalną strone www, która zproxuje stronę www. Oczywiście o łączeniu się z anonimowym proxym nie ma co mażyć...

  • Wszystko jest preinterpretowane przez lokalne proxy
  • Zabezpieczenia tu lepsze niż w chinach! Ponoć tam działa jap i tor - tutaj nie (odfiltrowane na proxy). Ja rozumiem, że młodzież nie tylko w polsce potrafi, ale...

Rozumiem, bezpieczeństwo doba terroryzmu itp. Ale dlaczego nie mogę zkomentować wpisu na linuxnews (port 80 nie działa...) tego nie rozumiem.

PS. Tak to to samo PPPR (analogia do POPR)

Jogger i Jabber, Osobiste, szkoła etc. »

[15 lipca, 2006 | 5 komentarzy | Poziom: 0 ]

Od kiedy muszę długo czekać na dostęp do komputera, wszystkie inne są zazwyczaj zajęte przez dzieci, w wieku na oko podstawówki/pierwsze klasy gimnazjum, grające w różne głupie gry na pewno nie przeznaczone dla ich wieku, spędzam przy komputerze więcej czasu (jak się dorwę), niż tydzień temu, gdy takiego tłoku nie było. Dlatego zadam pytanie: jaki jest sens blokowania ssh, tuneli itp. nie blokując gier i innych tego typu rzeczy(jest to bądz co bądz placówka edukacyjna. Dałbym chyba konia z rzędem dla tego kto udowodniłby mi wyższość walorów edukacyjnych strzelanki nad wykonaniem update'u Gentoo GNU/Linux)?

Bezpieczeństwo, System (GNU, BSD, Windows...) »

[15 lipca, 2006 | Dodaj komentarz | Poziom: 0 ]

Jakieś dwa tygodnie temu modnym tematem były tzw. tęczowe tablice (lista par hash -> string, który daje taki hash w skrócie). Natrafiłem na artykuł w dwuch gazetach. Opisze ten, w którym łączyli to z kwantową kryptografią (chyba to była Polityka, ale głowy nie dam).

Autor roztaczał wizję, że wszystkie hasła da się teraz w sposób prosty i łatwy złamać. Problemy są 2:

  • Trzeba mieć dostęp do pliku haseł. Jeśli się go nie ma to cóż - jest to atak brute force. Zmodyfikowany, ale jednak (zakładając domyślne ustawienie bodajże SELinux zajmie to maksymalnie ponad 2000 lat (po każdym haśle 5s przerwa, po 3 nieudanych 30s dla 32 bit. md5). Zapewne byłoby to dużo mniejsze, ale nadal ma się czas zaparzyć kawę :)
  • Cała metoda jest dobra, tylko co jeśli dodamy jakis jawny parametr? Choćby nazwę użytkownika(chociaż nie - dla root'a mogło by się to skończyć tragicznie), czy coś w tym rodzaju? Załóżmy - hasło brzmi 'tajnehaslo' -> sha1 1279d9a15a8662725e768df6f73b2e0afb977727. W drugim przypadku mamy 'uzytkownik$tajnehaslo' do zaszyfrowania -> sha1 5bbb78a87303475f2edd86035d861cb48885edbb. Teraz tablica ma trudniejsze zadanie - musi znaleźć coś odpowiadające kodowi 5bbb78a87303475f2edd86035d861cb48885edbb zaczynające się od 'uzytkownik$'. W rezultacie musimy stworzyć osobną tablice :). Ze względu na rozmiary tablic i czas ich generowania wystarczy dodać np. 64 bitową lidzbę na początku.

Z tego co wiem (artykuł z drugiej gazety) ten drugi system jest stosowany... w GNU/Linux (a znając życie co najmniej w OpenBSD :), a zapewne we wszystkich *BSD ).

Jako rozwiązanie tego problemu proponowana jest... kryptografia kwantowa. Nie znam budowy dysków komputerów kwantowych. 'Na zdrowy rozum' dane muszą być przechowywane w sposób tradycyjny tzn. nie zaszyfrowane kwantowo(z tego co doczytałem kryptografia kwantowa sprawdza się przy przesyłaniu danych). Przy takim szyfrowaniu część danych musi być zachowana do ponownego przesłania (w końcu nie wszystkie bity docierają). Jeśli możemy zachować dane (koniecznie niezaszyfrowane, albo z kluczem) to nie są one zaszyfrowane na tym komputerze, ergo kryptografia kwantowa to kryptografia niskiego poziomu (przesyłania danych).

Nie neguje sensowności kryptografii kwantowej, ale jest ona, ze swojej natury, peer-to-peer tzn. żeby przesłać coś muszę mieć możliwość bezpośredniego (więc bez pośredników - stanów nie da się 'skopiować' idealnie, na tym polega sens całej tej zabawy) przesłania qbitu (tutaj mogę mylić nazwy). Oznacza to, że dla masowego użytku jest to nie osiągalne (każdy musiałby mieć połączenie z każdym :) ).

Proszę o wskazanie błędów w tym rozumowaniu. Nie znalazłem ich, ale mogę się gdzieś mylić.

Osobiste, szkoła etc. »

[15 lipca, 2006 | Dodaj komentarz | Poziom: 0 ]
People spend more time with Office than the love of their life. Since thats a big sacrifice, we want our customers to love using Office. That means we spend time listening, sharing, building relationships, generating innovative ideas, and designing with our customers. The end result is software that our customers want to wrap their arms around and kiss.

PS. thats a big sacrifice Wiem, mam nieszczęście od czasu do czasu używać :)

Osobiste, szkoła etc., Programowanie (Moje Projekty), Programowanie (PHP, Java...) »

[13 lipca, 2006 | Dodaj komentarz | Poziom: 0 ]

Mam dziwne wrażenie, że trochę przekombinowałem.

Potrzeby był mi parser tekstu. Niestety najprostsze metody to:

  • Wczytanie wszystkiego i zwrócenie wyniku
  • To samo, tylko że z utworzeniem drzewka

Niestety było mi potrzebne coś w rodzaju leniwego drzewa - w końcu plik może być wczytywany przez słabe łącze. Dodatkowo wykonywanie kilku rzeczy naraz może przyspieszyć na maszynach wieloprocesorowych(i/lub wielordzeniowych procesorach).

Wpadłem na pomysł leniwego dzewka, które wysyła sygnały. W rezultacie:

  • Mam 2 abstrakcyjne [interfejsowe] fabryki (jedna dla drzewa, jedna dla słuchaczy)
  • Mam leniwe drzewko - oddzielnie interfejsy, oddzielnie klasy(w trakcie pisania)
  • Mam wreszcie słuchaczy (tylko interfejsy napisane)

I tutaj pojawia się pytanie - czy jest to elastyczność, czy przekombinowanie?

Programowanie (IDE, UML, Wzorce...), Programowanie (PHP, Java...) »

[11 lipca, 2006 | 4 komentarze | Poziom: 0 ]

Piszę kod w Javie:

  1. private Listener listener = new Listener() {
  2.   void someCallback() {
  3.     Iterator i = listeners.iterator();
  4.     while(i.hasNext()) {
  5.       Listener l = (Listener)i.next();
  6.       l.someCallback();
  7.     }
  8.   }
  9.   //I inne tego typu metody
  10. }
  11.  
  12.   private Set listeners;

W Javie 1.5 mamy lepiej

  1. private Listener listener = new Listener() {
  2.   void someCallback() {
  3.     for(Listener l: listeners) {
  4.       l.someCallback();
  5.     }
  6.   }
  7.   //I inne tego typu metody
  8. }
  9.  
  10. private Set<Listener> listeners;

A czy nie prościej by było to opisać jako:

private Listener listener = new proxyListener(); @ProxyCollection(listeners) private class proxyListener implements Listener {} private Set<Listener> listeners;

Nie upieram się przy znaku at(już wykorzystanym), może to być & lub $ (którego i tak nie można wykorzystać). Oczywiście wszystko na poziomie kompilacji...

Czy ktoś może powiedzieć, jak podobny kod wygląda w ruby(tzn. weduk filozofii ruby i w ruby)?

Programowanie (Moje Projekty), Programowanie (PHP, Java...) »

[07 lipca, 2006 | Dodaj komentarz | Poziom: 0 ]

... i dochodzę do wniosku, że zupełnie ona nie nadaję się do tego. Naturalny byłby taki model:

  1. Klient wywołuje read()
  2. Klasa sprawdza, czy w buforze jest odpowiednia ilość znaków, jeśli tak to zwraca je. Jeśli nie patrz dalej.
  3. Klasa 'budzi' parser
  4. Parser czyta strumień i zwraca token
  5. Klasa pracuje nad tokenem
  6. Klasa pisze do bufora
  7. Wracamy do ptk. 2

Właściwie to do pisania filtrów wystarczyłaby napisanie ptk. 5. Tymczasem muszę (chyba, że ktoś mi poda, gdzie taką klase mogę znaleźć) prawie wszystkie punkty napisać od początku.

Inne rozwiązanie to z urzyciem synchronizowanej listy. Napisanie tego nie zajmuje dużo czasu i jest w durzej mierze wspomagane JavaCC

  1. Wątek kładzie poszczególne tokeny na listę
  2. Wątek czyta listę, przetwarza i zapisuje do PipedWriter
  3. Wątek czyta z PipedReader (wątek klienta)

Niestety tutaj mamy ten problem, że mamy aż 2 wątki 'nadmiarowe' i rurkę. W dodatku te 2 wątki nie wiem jak zakończyć (w końcu parser przejmuje kontrolę nad parserem a nie ma metody isClosed()).

W Javie wcześniejszej niż 1.5(Program ze swej natury musi być kompatybilny conajmniej z Javą 1.2) nie ma StringBuilder więc zaimplementowanie pierwszego rozwiązania:

  • Wymagałoby implementacji tego
  • Korzystałaby z bufora stałej długości (co jeśli jakiś tekst jest większy? a co jeśli dużo mniejszy?)
  • Korzystałaby ze String. Ze względu na naturę Javy mogłoby być to dość kosztowna operacja...

Czy w tym momencie jestem zmuszony stworzyć odrębny pakiet utils?

GUI (Gnome, KDE, Gtk...), System (GNU, BSD, Windows...) »

[07 lipca, 2006 | Dodaj komentarz | Poziom: 0 ]

W systemach uniksowych (przynajmniej GNU/Linux) morzna w prosty sposób montować urządzenia: mount/umount. Oczywiście są programy wykonujące prace zamiast nas (choćby gnome-volume-manager). W razie czeego jest prosty program fuser, który sprawdzi, kto korzysta z danego urządzenia

fuser -m /media/disk

Niestety jestem zmuszony do korzystania z Windows i korzystam z danych zapisanych na flash dysku. Zamykam wszystko i przy próbie odmontowania... Pisze mi, że urządzenie jest zajęte(przez rand() minut?). Ktoś wie dlaczego?

Osobiste, szkoła etc. »

[04 lipca, 2006 | 5 komentarzy | Poziom: 0 ]

Czy ktoś może mi wytłumaczyć sens blokowania portu 22? Potrzebne mi jest SSH, a oczywiście jedyna możliwość to fizyczny dostęp do swojego komputera i konfiguracja(znajduje się z tąd bagatela ponad 1000 km).

Oczywiście metody obejścia tego są poblokowane (odpowiednie strony). Czy ktoś znałby jakieś mało znane obejście problemu(tzn. takie, które admin nie zna)?

Jogger i Jabber, Osobiste, szkoła etc., System (GNU, BSD, Windows...) »

[03 lipca, 2006 | Dodaj komentarz | Poziom: 0 ]

Udało mi się umieścić FF (Bon Echo) w pamięci flash. Działa trochę wolno, ale za to to FF z profilem trzymanym w ukryciu.

Dało sie też na szczęście ustawić polską klawiaturę (ciagle zamiast @ wciskałem ").

Ideologie i wierzenia, Osobiste, szkoła etc., Programowanie (IDE, UML, Wzorce...), System (GNU, BSD, Windows...) »

[01 lipca, 2006 | Dodaj komentarz | Poziom: 0 ]

Mam szczęście być na wakacjach. Niestety jestem uzależniony od jedynego słusznego systemu operacyjnego z jego przeglądarką.

Instalowanie i ściąganie środowiska pracy trochę zajmuje. Może kupię po prostu pendrive i zainstaluję:

  • Eclipse
  • Gimp
  • Firefox

Czy 512 MB wystarczy?