Osobiste, szkoła etc., Programowanie (IDE, UML, Wzorce...), Programowanie (Moje Projekty), Programowanie (PHP, Java...), Techblog »

[27 grudnia, 2008 | 6 komentarzy | Poziom: 0 ]

Ostatnio bawię się w rozwijanie własnego systemu operacyjnego. Wspaniała sprawa jeśli ktoś myśli, że wszystko wie ;)

W trakcie wyszło na jaw, że muszę zaimplementować synchronizowany zbiór (dokładniej rzecz biorąc - nieużywanych stron). Ale czekanie na mutexie nie wydaje się optymalną strategią. Poszukałem więc algorytmów lock-free. Na początek przyszedł stos.

Czytaj dalej »

Programowanie (Moje Projekty), Sieć (IP, TCP, ...), Sprzęt, System (GNU, BSD, Windows...) »

[11 listopada, 2008 | 3 komentarze | Poziom: 0 ]

Chciałem napisać sterownik dla modemu USB pod OpenBSD. Instalacja pod qemu nie spowodowała większych trudności. Współdzielenie plików między hostem a gościem trochę większe (qemu współdzieli przez smb a OpenBSD nie wspiera ani smbfs ani sshfs) ale w końcu udało się (tcp redirection + sshfs).

Zdobycie źródeł OpenBSD też nie nastarczało trudności. Kłopoty zaczeły się dopiero potem...

Czytaj dalej »

Programowanie (Moje Projekty), Sieć (IP, TCP, ...), System (GNU, BSD, Windows...) »

[11 września, 2008 | 7 komentarzy | Poziom: 0 ]

Prosty kod który ma jedno zadanie - resetować połączenie gdy nie może spingować czegoś. Nie jestem pewien czy czekanie działa.

  1. #!/usr/bin/env perl
  2. use strict;
  3. use warnings;
  4.  
  5. use Net::Ping;
  6. use POSIX 'setsid';
  7. use POSIX 'sleep';
  8.  
  9. ### Configuration
  10. ## Hosts - each member is a host to ping. Move the quickiest to the beginning.
  11. ## Please note that the more hosts is pinged the more realible is test and
  12. ## the more time it requires
  13. my @hosts = ('netia.pl', 'google.com', 'onet.pl');
  14.  
  15. ## Method of ping
  16. my $ping_method = 'icmp';
  17.  
  18. ## Sleep - a sleep in ms betwean the checks
  19. my $sleep = 250;
  20.  
  21. ## Tries - a number of attapts to connect
  22. my $tries = 1;
  23.  
  24. ## Routine to be called if network not found
  25. sub on_network_not_found {
  26.  system '/etc/init.d/net.ppp0 restart';
  27. }
  28.  
  29. ### Daemonize
  30. chdir '/'                 or die "Can't chdir to /: $!";
  31. defined(my $pid = fork)   or die "Can't fork: $!";
  32. exit if $pid;
  33. setsid;
  34. open STDIN, '/dev/null'   or die "Can't read /dev/null: $!";
  35. open STDOUT, '>/dev/null' or die "Can't write to /dev/null: $!";
  36. open STDERR, '>&STDOUT' or die "Can't dup stdout: $!";
  37.  
  38. ### Main loop
  39. my $p = Net::Ping->new($ping_method) or die "Cannot create ping object";
  40.  
  41. MAIN: while(1) {
  42.   for(my $i = 0; $i < $tries; $i++) {
  43.     select(undef, undef, undef, $sleep/1000.0);
  44.     for my $host (@hosts) {
  45.       next MAIN if $p->ping($host)
  46.     }
  47.     on_network_not_found();
  48.   }
  49. }

Kod jak zwykle na MIT.

Ideologie i wierzenia, Programowanie (IDE, UML, Wzorce...), Programowanie (Moje Projekty) »

[21 czerwca, 2007 | Dodaj komentarz | Poziom: 0 ]

Umieściłem wersję 0.0.1 na lauchpadzie. W międzyczasie wyszło kilka wydań. Obecne są dwa milestony nazwane roboczo 0.0.10 i 0.0.15. Kłopot polega na tym, że zbliża się wersja 0.0.5 która, jak wszystko się uda, będzie zawierała wszystkie wymagania dotyczące 0.0.10.

Czytaj dalej »

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

[14 czerwca, 2007 | 2 komentarze | Poziom: 0 ]

Nie mogłem znaleźć dobrego programu do grafów. Gnuplot jest niestety zbyt skomplikowany i ma za dużo opcji. Napisałem, w połowie na kolanie własny program do rysowania ich. Na razie rysuje w formacie SVG, ale planuje dodanie innych formatów (zapewne pojawi się warstwa pośrednia). Program jest napisany Rubim i korzysta z biblioteki SVG.

Składnia pliku jest następująca:

Czytaj dalej »

GUI (Gnome, KDE, Gtk...), Jogger i Jabber, Programowanie (Moje Projekty) »

[07 czerwca, 2007 | 5 komentarzy | Poziom: 0 ]

Nowa wersja ignorująca białe linie na końcu i na początku oraz ignorująca kod z klasą inline

<pre>, dotychczas stosowane na tej stronie, okazało się niezgodne z w3c.

Czytaj dalej »

Programowanie (IDE, UML, Wzorce...), Programowanie (Moje Projekty), Programowanie (PHP, Java...), Technologie W3C (XHTML, CSS...) »

[24 kwietnia, 2007 | 5 komentarzy | Poziom: 0 ]

Często się mówi, że tabela jest wyklęta. To nie prawda - tabela powinna być wyklęta jako sposób projektowania stron/formularzy a nie jako sposób prezentacji danych, który w sposób naturalny są tabelami. Idąc tym tropem W3C zabroniło stosowaniaznacznika <form> w <tbody> i <tr>.

Wszystko by było w porządku, gdyby nie przyszło mi do głowy zaprezentować danych jako tabela. Na razie wszystko gra. Wpadłem na prosty pomysł - zastosowanie ostatniego pola jako pola dodawania nowego rekordu:

Czytaj dalej »

Bezpieczeństwo, Osobiste, szkoła etc., Programowanie (Moje Projekty), Programowanie (PHP, Java...), Sieć (IP, TCP, ...), System (GNU, BSD, Windows...) »

[11 lutego, 2007 | 3 komentarze | Poziom: 0 ]

Przymierzam się do zabezpieczenia się przed tym co czeka mnie w lipcu (tak ten sam wspaniały firewall blokujący ssh). Ponieważ OpenVPN otwarte na porcie innym niż 80, 443 etc. na pewno zostanie zablokowane (zablokowali nawet 8080) a 80, 443 są już w użytku. Przydałoby się coś napisać...

Czytaj dalej »

Bazy Danych, Osobiste, szkoła etc., Poczta (POP3, IMAP, SMTP...), Programowanie (Moje Projekty), Programowanie (PHP, Java...), Sieć (IP, TCP, ...), System (GNU, BSD, Windows...), Technologie W3C (XHTML, CSS...) »

[26 grudnia, 2006 | Dodaj komentarz | Poziom: 0 ]

Zaczeło się niewinnie - dlaczego nie mieć Google Calendar i Google Mail w Evolutionie 'natywnie (czyli nie przez POP3 i ro ical)? W chwili obecnej nie istnieje żadna biblioteka dla Google Calendara pod C. Instnieją natomiast pod Javę, C# i pythona.

Czytaj dalej »

Jogger i Jabber, Programowanie (Moje Projekty), Programowanie (PHP, Java...) »

[22 listopada, 2006 | 2 komentarze | Poziom: 0 ]

Nie wiem, czy jest już coś takiego.

Czytaj dalej »

Programowanie (Moje Projekty), Programowanie (PHP, Java...), System (GNU, BSD, Windows...), Systemy plików (NFS, ext3...) »

[21 listopada, 2006 | Dodaj komentarz | Poziom: 0 ]

Wsparcie niby do zapisu jest, ale nie działa. Nie mam siły/czasu żeby to zdebugować. Na razie wypuszczam wersje 0.0.1.90. Mam nadzieje, że wersja 0.0.2 będzie ostateczna ;)

Czytaj dalej »

Programowanie (Moje Projekty), Programowanie (PHP, Java...), System (GNU, BSD, Windows...), Systemy plików (NFS, ext3...) »

[19 listopada, 2006 | Dodaj komentarz | Poziom: 0 ]

GConfFS wykorzystuje FUseFS i ruby gconf2

Jeśli licencja FUseFS okaże się niewolna przepiszę na Mono (ktoś wie, czy mam trzymać się pliku README, czy COPYRIGHT?). Na razie jest to opublikowane na MIT'cie

Czytaj dalej »

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 (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?

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

[28 kwietnia, 2006 | Dodaj komentarz | Poziom: 0 ]

Ostatnio kupiłem sobie książkę o Java 1.5 Tiger (na temat nowości).

Doszedłem do wniosków, że większość z tego, co wprowadzili, było w C++ (czy nawet w C) i... zostawało przez programistów Java od czci i wiary (typy generyczne, printf) albo w ogóle pominięte (enum). Część to transportacja z .Net różnych rzeczy (adnotacje, for/in).

Java uległa 'skomplikowaniu' przez co... łatwiej się pisze(bezpieczniejsze typowanie, wyłączenie warringów, łatwiejsze formatowanie stringów...).

Wnioski:

  • Java 5 staje do walki z .Net. Jest na słabej pozycji(zarówna na Windows jak i na OS [wolny interpretator .Net - mono]), ale nie przegranej.
  • Może będzie wprowadzone wielodziedziczenie(dlaczego nie? Czasami jest to bardzo przydatne...) - jest to trochę bardziej skomplikowane, ale nie niemożliwe.
  • Delegacje/wskaźniki na funkcje to coś, co jeszcze Java nie ma, a powinna mieć.

Pozdrawiam.

Programowanie (Moje Projekty), Technologie W3C (XHTML, CSS...) »

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

Wszystkie informacje o sowie (w moim łamanym angielskim ;) ) będą teraz na Sowa Blog.Każda pomoc mile widziana :)

Programowanie (Moje Projekty) »

[30 marca, 2006 | Dodaj komentarz | Poziom: 0 ]

Dodałem klasy abstrakcyjne i poprawiłem kilka błędów.

Programowanie (Moje Projekty) »

[25 marca, 2006 | Dodaj komentarz | Poziom: 0 ]

Sowa Data Capacitor 0.0.0 dev0 już jest. Jak widać Na razie wersja niestabilna (tak na prawdę nie ma 100% funkcjonalności wersji 0.0.0).

Zapraszam do testowania.

Programowanie (Moje Projekty) »

[19 marca, 2006 | Dodaj komentarz | Poziom: 0 ]

Z JVM (zarezerwowane na sf.net) na Sowa.

Jestem otwarty na nowe zmiany, jesli wie ktoś, jak to zmienić na sf.net

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

[18 marca, 2006 | 1 komentarz | Poziom: 0 ]

Pozostaje mi tylko ujednolicić kod (_ przed prywatnymi i chronionymi zmiennymi ect) dołożyć dokumentacje (JavaDoc) i upublicznić(gdzie?)

Do zrobienia do 0.1 Alpha:

  • Dodać wyjątki - w chwili obecnej kod napisany jest w większości zakładając, że zmienne są zainicjalizowane i poprawne.
  • Dodać Obsługe jakiś struktur.

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

[09 marca, 2006 | Dodaj komentarz | Poziom: 0 ]

Co w niej będzie:

  • Jakaś stabilizacja API dla JCM DC 0.1.
  • Zaimplementowana podstawowa funkcjonalność (tzn. ogólne).
  • Upublicznienie kodu(np. na sf.net).

W DC Alpha chciałbym mieć już dodaną obsługę XML/JDBC/Memory. Zachęcam do:

  • Pomocy po napisaniu kodu.
  • Powiedzeniu mi, że głupio robię, wskazując otwarte coś, co robi to samo.

Programowanie (IDE, UML, Wzorce...), Programowanie (Moje Projekty) »

[05 marca, 2006 | Dodaj komentarz | Poziom: 0 ]

darmowy hosting obrazków darmowy hosting obrazków darmowy hosting obrazków darmowy hosting obrazków

Oczywiście klasy do odsługi XML/JDBC/Mem to osobne hierarcie.

Osobiste, szkoła etc., Programowanie (Moje Projekty), Programowanie (PHP, Java...), Technologie W3C (XHTML, CSS...) »

[05 marca, 2006 | 2 komentarze | Poziom: 0 ]

Na razie udało mi się zrobić UML dla klas opisujących elementy. Jak widać UML jest wykonany nieprofesjonalnie itd.

Image Hosted by ImageShack.us

Poszukiwanie dobrego, otwartego edytora UML trwają.

Osobiste, szkoła etc., Programowanie (Moje Projekty), Programowanie (PHP, Java...), Technologie W3C (XHTML, CSS...) »

[05 marca, 2006 | Dodaj komentarz | Poziom: 0 ]

Stronę, o której kilkakrotnie wspominałem(http://glib.mojastrona.dyndns.org/ - na razie nie działa) mam zamier przestawić na JCM - autorskiego CMSa.

W założeniach ma być:

  • Modularny
  • Opierać się na plikach XML
  • Część danych(np. wygenerowane PDF'y - pliki lub fragmenty) cachować

Elementy:

  • Magazyn danych - Ujednolicona komunikacja z bazą danych, xmlem ect.
  • Modelu zawartości - Wewnętrzna reprezentacja.
  • Wyświetlaczy - Wyświetlają część modelu(artykuł, kod źródłowy).
  • Kontrolery - Zarządzają przepływem informacji.

Co z tego wyjdzie, zobaczymy. Czy ktoś zna coś, co mogłoby mi zaoszczędzić pisania Magazynu?

PS. JCM będzie miał oczywiście licencje OS.