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 »

Programowanie (PHP, Java...), Sprzęt, System (GNU, BSD, Windows...), Techblog »

[14 lutego, 2009 | 23 komentarze | Poziom: 0 ]

Jakiś czas temu widziałem pokazy jak przyspieszyć kopiowanie za pomocą MMX i SSE. Postanowiłem sprawdzić jak to jest. Wyniki często były zaskakujące ale wydaje mi się, że udało mi się powtórzyć je 'za każdym razem'.

Środowisko testowe: Linux notebook 2.6.29-rc3-zen1 #2 Mon Feb 9 02:27:19 CET 2009 i686 Intel(R) Celeron(R) M processor 1.50GHz GenuineIntel GNU/Linux

Ponieważ w komentarzach wykazano błędy w implementacji to poprawiłem kod.

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 »

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

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

Postanowiłem przepisać 'zegar' na kilka języków. Na pierwszy ogień poszła Vala i python (nie wiem czy było to przepisane - w każdym razie sam to zrobiłem).

Czytaj dalej »

Bazy Danych, Bezpieczeństwo, Programowanie (PHP, Java...) »

[20 kwietnia, 2008 | 4 komentarze | Poziom: 0 ]

Jeśli nie korzystamy ze SQLite to trzeba wpisać hasło do konfiguracji merb/rails. Kłopot w tym, że zazwyczaj chcemy, żeby było niedostępne dla innych.

Czytaj dalej »

Bazy Danych, Programowanie (PHP, Java...) »

[06 stycznia, 2008 | 8 komentarzy | Poziom: 0 ]

Załóżmy, że mamy takie tabele:

  1. CREATE TABLE users (
  2.         id INTEGER PRIMARY KEY AUTOINCREMENT,
  3.         name VARCHAR(255) UNIQUE NOT NULL
  4. );
  5.  
  6. CREATE TABLE categories (
  7.         id INTEGER PRIMARY KEY AUTOINCREMENT,
  8.         name VARCHAR(255) UNIQUE NOT NULL
  9. );
  10.  
  11. CREATE TABLE posts (
  12.         id INTEGER PRIMARY KEY AUTOINCREMENT,
  13.         user_id INTEGER NOT NULL REFERENCES users(id),
  14.         category_id INTEGER NOT NULL REFERENCES categories(id),
  15.         title VARCHAR(255) UNIQUE NOT NULL,
  16.         visited INTEGER NOT NULL DEFAULT 0
  17. );

Teraz zadam proste pytanie: jak pobrać wszystkich użytkowników, którzy najpopularniejszy post był w danej kategori? Odpowiedź to chyba:

SELECT * FROM users WHERE id IN (SELECT user_id FROM posts WHERE (user_id, visited) IN (SELECT user_id, MAX(visited) FROM posts GROUP BY user_id) AND category_id = 1);
(z testów wynika, że jest to rozwiązanie poprawne)?

Zacznijmy od powiedzenia wprost, że:

  • Wyszukanie tego konkretnego kawałka SQL zajeło mi masę czasu.
  • Ktoś chcę ten kawałek ruszać? Będzię on kawałkiem niezrozumiałego, na pierwszy rzut oka, kodu.
  • W SQLite nie działa...

Czy ktoś wie, jak to zrobić prościej (zaczynam zastanawiać się nad widokami)? Bo w końcu nie wydaje się to tak niespodziewaną i skomplikowaną operacją...

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

[30 grudnia, 2007 | Dodaj komentarz | Poziom: 0 ]

Niektóre sposoby do zabierania programistom żyletek w Javie dają ciekawe rezultaty. Potrzebuje stworzyć Selector w Javie poprzez Selector.open(). Niestety wyrzuca on IOException:

Czytaj dalej »

Programowanie (PHP, Java...) »

[02 grudnia, 2007 | 3 komentarze | Poziom: 0 ]

Dawno nie pisałem z powodu braku czasu. Jednak ponieważ znalazłem pewną interesującą właściwość Javy zamieszczam ją tutaj.

Kilka razy spotkałem się z opiniami, że nie da się stworzyć generycznej tablicy. Nie jest to jednak prawda. Jeśli ktoś chciałby ją stworzyć tutaj jest przykładowy kod:

  1. public static <T> T[] createArray(Class<T> cl, int length) {
  2.         return (T[])java.lang.reflect.Array.newInstance(cl, length);
  3. }

Użycie tego 'cuda' to:

String[] str = createArray(String.class, 10);

Da się prościej - nie trzeba tworzyć tablicy ;)

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 »

GUI (Gnome, KDE, Gtk...), Programowanie (PHP, Java...), Sieć (IP, TCP, ...), Technologie W3C (XHTML, CSS...) »

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

Sprawdziłem jak umieścić 3 najpopularniejsze(właściwie to chyba jedyne) silniki w aplikacji. Aplikacja ma bardzo proste zadanie - wyświetlić stronę Google. Na pierwszy ogień najbardziej popularny silnik czyli Gecko.

Czytaj dalej »

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

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

Ostatnio zastanawiałem się, czy da się połączyć GSlice i operator new w C++. Kod wydawał by się bardzo prosty:

Czytaj dalej »

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 »

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 »

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

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

Wracam do mainstreamu Javy - do OpenJDK. Niestety wiąże się to z koniecznością posiadania zamkniętej Javy... (Mam nadzieje, że będzie to wybaczone... ;) )

Pozatym praktycznie nie można dodać swoich flag kompilacji. Po dołączeniu cflags dodaje -O3 (co można jeszcze przeżyć, ale co, jeśli ktoś chce -Os?) i... -march=i568. Rozumiem, dlaczego chcą skompilować binarki dla i568 ale dlaczego ja nie mogę tego skompilować dla np. pentium 4 czy Athlona XP?

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 (PHP, Java...), System (GNU, BSD, Windows...) »

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

Nie wiem, czy dotyczy to innych wersji. Hal w tej wersji do kompilacji(w opcji) potrzebuje libpared... w wersji 1.7.1 - nie 1.7.0 ani 1.7.2 (!!!), o 1.8.0 nie mówiąc, tylko libparted == 1.7.1. Świadczy to o może o:

Czytaj dalej »

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

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

W okienku tabela(tzn. kolumny) rozszerza i zwęża się - jest to działanie logiczne. Znajomy poprosił mnie o pomoc - jak zrobić, żeby kolumny można było przewijać (tak jak w arkuszach kalkulacyjnych). JScrollPane oczywiście nie pomogło - można było przewijać w pionie ale nie w poziomie.

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 »

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

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

Jedną z większych wad Javy jest brak typów unsigned. W .Net te typy występują.

Wydawałoby się logiczne, żeby stosować np. uint wtedy gdy nie może przyjąć wartości <0.

Czytaj dalej »

GUI (Gnome, KDE, Gtk...), Osobiste, szkoła etc., Programowanie (PHP, Java...) »

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

Z niewiadomych przyczyn w evolution-data-server znajdują się takie metody:

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 »