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ą:
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.
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.
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).
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.
Załóżmy, że mamy takie tabele:
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:
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ą...
Niektóre sposoby do zabierania programistom żyletek w Javie dają ciekawe rezultaty. Potrzebuje stworzyć Selector w Javie poprzez Selector.open(). Niestety wyrzuca on IOException:
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:
Użycie tego 'cuda' to:
String[] str = createArray(String.class, 10);
Da się prościej - nie trzeba tworzyć tablicy ;)
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:
./configure && make && sudo make installSprawdził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.
Ostatnio zastanawiałem się, czy da się połączyć GSlice i operator new w C++. Kod wydawał by się bardzo prosty:
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'):
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:
Ostatnio programuje w Ruby używając Railsów. Próbuje trochę metaprogramować - używając czegoś podobnego do scaffoldu.
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?
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:
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...
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...).
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:
Tyle mówi się o RoR jednak IMHO należałoby także wspomnieć osobno o sercu - ActiveRecord.
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.
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ć...
Z niewiadomych przyczyn w evolution-data-server znajdują się takie metody:
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.
Nie wiem, czy jest już coś takiego.
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 ;)
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
Szukam dobrego frameworku AJAX. Który?