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

[06 maja, 2009 | 16 komentarzy | Poziom: 0 ]

Od zarania dziejów ludzie zastanawiali się jak ominąć problem wzajemnych zależności w C++. No może nie do końca od zarania dziejów i raczej nie wszyscy ludzie - ale to był problem "od zawsze"

Najpopularniejszym rozwiązaniem jest zadeklarowanie jednej klasy przed drugą:

  1. class A;
  2.  
  3. class B
  4. {
  5. public:
  6.   B(A *) {}
  7. };
  8.  
  9. class A
  10. {
  11.   static B b;
  12. };

Czytaj dalej »

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 (IDE, UML, Wzorce...) »

[28 lipca, 2008 | 6 komentarzy | Poziom: 0 ]

Jak ważne jest reguralne używanie tego narzędzia:

% git count-objects 67 objects, 268 kilobytes % git gc Counting objects: 2418, done. Compressing objects: 100% (969/969), done. Writing objects: 100% (2418/2418), done. Total 2418 (delta 1426), reused 2343 (delta 1371) % git count-objects 78 objects, 312 kilobytes

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

[16 marca, 2008 | Dodaj komentarz | Poziom: 0 ]

Od dawna (ponad miesiąc) nie pisałem - może czas zamieścić coś

Pisałem dla zabawy GC i natrafiłem na problem - ciekawi jak zostały rozwiązane u innych (zaznaczam - całą wiedzę jaką na ten temat posiadam biorę z sieci. Jeśli w tym tekście są jakieś głupoty to bardzo przepraszam i proszę o wskazanie ich - ja się dopiero uczę). Mamy 3 obiekty: A, B i C. A korzysta z B, B z C a C z A. W jakiej kolejności wykonać destruktory?

Czytaj dalej »

Bazy Danych, Osobiste, szkoła etc., Programowanie (IDE, UML, Wzorce...), Systemy plików (NFS, ext3...) »

[09 stycznia, 2008 | 14 komentarzy | Poziom: 0 ]

Mimo że Subversion miało być lekiem na całe zło - szczególnie spowodowane przez CVS - to niestety nim nie jest. Nowoczesne systemy kontroli wersji mają wiele zalet. Dodatkowo nigdy nie spotkałem w nich błędów. W ostatnim moim projekcie mimo 34 rewizji(w tym 5 bezsensownych by obejść błąd SVN) błędy występowały kilkukrotnie.

Do popularnie wyskakujących błędów SVN u mnie należy 'SVN: out of data'. Co dziwniejsze operuje na file://, więc żadnych różnic czasowych nie powinno być. Jestem jedynym użytkownikiem tego repozytorium - zresztą wykonywałem przy tym svn update.

Ideologie i wierzenia, Programowanie (IDE, UML, Wzorce...), Programowanie (PHP, Java...), System (GNU, BSD, Windows...) »

[14 października, 2007 | 2 komentarze | Poziom: 0 ]

Czyli dlaczego autotools są najgorsze ale lepszych nie ma.

Autotoolsy jakie są każdy widzi. Są niezbyt łatwe do nauczenia się, ciężkie, sprawdzają masę niepotrzebnych rzeczy (np. czy to nie jest egzotyczny system, który miał 1 użyszkodnika pięć lat temu ;) ). Jednak mają kilka, niezastąpionych cech:

  • Reguła najmniejszego zaskoczenia. Jak zainstalować program na GNU/Linux? ./configure && make && sudo make install
  • Wsparcie dla libtool lub podobych
  • Wsparcie dla pkg-config (CMake posiada)

Czytaj dalej »

Bazy Danych, Programowanie (IDE, UML, Wzorce...), Programowanie (PHP, Java...), Sieć (IP, TCP, ...), Technologie W3C (XHTML, CSS...) »

[15 sierpnia, 2007 | 8 komentarzy | Poziom: 0 ]

RoR ma jeden, podstawowy problem - brak dokumentacji i ciągłe zmiany. Jest to bardzo potężny ale jednocześnie bardzo zgubny framework. Co gorsza duża część kursów pokazuje jak nie programować w Railsach

Czytaj dalej »

Bazy Danych, Bezpieczeństwo, Osobiste, szkoła etc., Programowanie (IDE, UML, Wzorce...), Technologie W3C (XHTML, CSS...) »

[07 lipca, 2007 | 2 komentarze | Poziom: 0 ]

Chciałem zrobić check-in online. Lot był w British Airways a osoba której robiłem check-in miała nieszczęście mieć w nazwisko składające się z 21 znaków (maksymalnie może być 20). Próbowałem na różne sposoby - tylko litery (bez myślnika tak jak przysłali przez SMTP), tylko pierwszych 20 znaków. Nawet (nie wiem czy to legalne, ale nic mnie to nie obchodzi) zmieniłem firebugiem limit do 21 - ale wciąż pokazywało, że złe nazwisko. Oczywiście w końcu został przekroczony limit i zablokowało możliwość.

Oczywiście nigdzie nie jest napisane co w takiej sytłacji robić. Nigdzie nie znalazłem możliwości skontaktowania się w sprawie strony (tylko i wyłącznie w sprawie lotniska/lotu itp.). Linia telefoniczna, na którą chciałem zadzwonić, działa 9-17 od poniedziałku do piątku... też bym tak chciał - uczących się nie obowiązuje prawo pracy jeśli chodzi o naukę ;). W FAQ'u też nie ma odpowiedzi. Ktoś zna sposób na przyszłość?

GUI (Gnome, KDE, Gtk...), Programowanie (IDE, UML, Wzorce...), Programowanie (PHP, Java...), System (GNU, BSD, Windows...) »

[06 lipca, 2007 | 2 komentarze | Poziom: 0 ]

Chciałem zobaczyć jak teraz robi się tzw. tray icon. Okazało się że w około 15 linijkach pythona mozna to zrobić(razem z 'Quit'):

Czytaj dalej »

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 »

Bezpieczeństwo, Ideologie i wierzenia, Osobiste, szkoła etc., Programowanie (IDE, UML, Wzorce...), Sieć (IP, TCP, ...), Technologie W3C (XHTML, CSS...) »

[24 maja, 2007 | Dodaj komentarz | Poziom: 0 ]

Trafiłem ostatnio na ciekawą stronę (mniejsza z tym jaką). Admin dał tylko kilka prób na zalogowanie się na forum (Tak... Na pewno wszyscy mażą żeby włamać się na moje konto...), żeby pobrać plik(nie dało się bez rejestracji). Potem konto jest zablokowane na 15 minut - w teorii. W każdym razie po pół godziny nie dało się zalogować. Stworzyłem nowe konto, loguje się i... plik który godzinę wcześniej ściągał się wyparował.

Najciekawsze jednak jest to, że webmaster słyszał wprawdzie o zasadach bezpieczeństwa ale o szyfrowaniu już nie.

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 »

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

[17 marca, 2007 | Dodaj komentarz | Poziom: 0 ]

Usłyszałem, że Netbeans (6.0), które IMHO rozwija się znacznie szybciej niż eclipse, ma wsparcie dla Ruby on Rails. Postanowiłem przekonać się na własne oczy...

Czytaj dalej »

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

[03 marca, 2007 | 2 komentarze | Poziom: 0 ]

Gcj nie tolerował flag -Os -march=pentium-m -mmmx -msse -msse2 -mfpmath=sse -pipe -momit-leaf-frame-pointer -ggdb. Skompilował się jednak z -O0 -ggdb. Na razie sprawdzam, co w budowie przeszkadza dodając flagi po koleji (trochę to trwa, ale optymalizacja jest wysoce wskazana...).

Czytaj dalej »

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

[01 marca, 2007 | 4 komentarze | Poziom: 0 ]

Żeby poprawić sobie humor ponarzekam na wolne IDE. Przedewszystkim na to, że zbytnio skupiają się na jednym języku. Zgodzę się, że filozofia "rób jedną rzecz dobrze" jest potrzebna ale nie wtedy gdy musimy połączyć kod w dwóch językach.

Czytaj dalej »

Jogger i Jabber, Osobiste, szkoła etc., Programowanie (IDE, UML, Wzorce...), Technologie W3C (XHTML, CSS...) »

[01 stycznia, 2007 | Dodaj komentarz | Poziom: 0 ]

Przesiadam się na JQuery. Niestety nie miałem czasu przetestować. Z góry przepraszam, jeśli coś nie będzie działało (właśnie się ładuje a ja przechodzę w stan hibernacji

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

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?

GUI (Gnome, KDE, Gtk...), Osobiste, szkoła etc., Programowanie (IDE, UML, Wzorce...) »

[11 czerwca, 2006 | 2 komentarze | Poziom: 0 ]

Zbudowałem eclipse 3.2. Trwało to prawie 48 h, ale warto było - działa jak rakieta, można spokojnie pracować. Zajmuje chyba też dużo mniej pamięci. Nie wiem czy to zasługa nowej wersji, czy gcj.

Przy okazji pobiłem rekord zajęcia pamięci ponad 350% (tzn. 100% = 512 MB, a 1,3 GB (lub więcej) siedziało na swapie):

Free Image Hosting at www.ImageShack.us

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.

GUI (Gnome, KDE, Gtk...), Programowanie (IDE, UML, Wzorce...), Programowanie (PHP, Java...), System (GNU, BSD, Windows...) »

[19 kwietnia, 2006 | Dodaj komentarz | Poziom: 0 ]
Zależało mi na na włączeniu do QT 4.0 możliwości robienia prania i gotowania, ale zdecydowaliśmy, że te funkcje warto pozostawić do rozważenia dla przyszłych wersji

Gnome nie zrobiłby tego w gtk+ - utworzyłby projekt ghome z bibliotekami np. gwash i gcook, co pozwoliłoby utrzymać spójność i prostotę przy dodawaniu nowych możliwości.

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.

GUI (Gnome, KDE, Gtk...), Programowanie (IDE, UML, Wzorce...) »

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

Oto krótka znajomość z anjutą:

  1. Próda dowiedzenia się, jak w tym można robić biblioteki. Bezskutecznie.
  2. Zaprzestanie ponowna próba uruchomienia: nie da się uruchomić (#ileśtam)
  3. Teraz nie może odczytać pliku, do krórego ma prawa r.

Spróbuje z CVS. I gnome dziwi się, że potrzebuje developerów?

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

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

Oprogramowanie obiektowe jest 'super'. Do wszystkiego(przykład PHP) dodaje się obiekty. Czy jednak aby zawsze jest to słuszna droga?

Nie da się zaprzeczyć, że w kilku dziedzinach jest to słuszne podejście(GUI), ale czy jednak zawsze?

  1. #include <iostream>
  2. #include <cstdio>
  3.  
  4. static void main() {
  5.         std::cout << "Tekst 1" << std::endl;
  6.         printf("%s", "Tekst 2");
  7. }

Oprócz sprawdzania typów(w kompilatorach innych niż gcc) co zyskaliśmy?

  • Kolejny bufor(zależy od implementacji, ale z tego co pamiętam...)
  • Dodatkowy wywołania wirtualnych funkcji - int fd w uniksach nie zawsze jest plikiem.

Często mówi się o programowaniu modułowym, gdzie zmiana jednego elementu wpływa na drugi. Odpowiedzią na to jest tylko to, że można porównywać zły kod modułowy z dobrym kodem obiektowym. W programowaniu funkcyjnym mamy tak hermetyczne funkcje, że nie mogą one nic zmieniać poza.

Zupełnie też nieznanym, ale dosyć ciekawym podejściem, jest programowanie logiczne. Połączenie tego z obiektami zaowocowałoby jakimś gniotem lub językiem UF.

GUI (Gnome, KDE, Gtk...), Programowanie (IDE, UML, Wzorce...) »

[13 lutego, 2006 | 2 komentarze | Poziom: 0 ]

Wymagania dla Idealnego IDE:

  • Obsługa pkg-config.
  • Obsługa bibliotek.
  • Interfejs w GTK+.
  • Dobre wsparcie dla GObject.
  • Wsparcie dla autotools.

Po kolei punkty. Bez pkg-config dosyć trudno obsługiwać biblioteki Gnome(dodano np. Cairo w zależności Gtk i już kompilacja się sypie). Lubię tworzyć biblioteki a nie binarki all-in-one. Gtk ładnie skomponuje się w Gnomie, czego nie można powiedzieć o QT(jest Gtk-Qt a nie ma QTK ). W GObject jest trochę mechanicznej pracy(_GET_TYPE ect.), którą można zautomatyzować. Na koniec - większość ludzi jest przyzwyczajona do ./configure && make && su - -c 'make install'.

W Anjucie(2) nie odkryłem dobrego sposobu tworzenia bibliotel. W KDevelop nie znalazłem pkg-config, gtk+, gobject. Za powiadomienia będę wdzięczny.