W poprzednim wpisie mówiłem na temat mozliwości usprawnienia alokacji pamięci w C++. Doszedłem do wniosku że implementacja jest zbyt wolna z powodu GHashTable. Spróbowałem zastąpić go GTree. Rozwiązanie okazało się mieć mniej więcej taką samą szybkość jak new/delete. Jednak była to niewielka, bo niewielka optymalizacja w stosunku do standardowego C++(w granicach błędu pomiaru).
Jeszcze swojej nie wygłosiłem, ale pozwole sobie skrytykować przezentacje robione na kursie języka innych:
Ciekawę ile błedów z w/w popełnie na swojej :)
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.
Jakis czas temu chciałem trochę pobawić się grami. Na pierwszy ogień poszła najprostsza gra czyli kółko i krzyżyk. Niestety wpisywanie wszystkiego ręcznie było dość nudne(). Teraz postanowiłem trochę uprościć tą sprawę i napisać program jak najciekawiej (tzn. bez zbędnego powtarzania się i nudnego kodu).
Pierwszy sposób to trzymanie całej planszy w jednym 32 bitowym int (uint32_t). Każdy gracz lub sekwencja kończąca gre byłaby maską. Pole opisane byłoby przez 2 bity (zajęte/nie zajęte + numer gracza lub pierwsze zajęcie przez gracza 0 a drugie zajęcie przez gracza 2). Wszystko by było pieknie gdyby dało się wpisać wartości binarne do kodu C - ale da się tylko w szesnastkowym. Dodatkowo tworzenie tablic nie było ciekawe ;) - ale IMHO to jest najoszczedniejszy sposób jeśli chodzi o pamięć i CPU (mylę się?)
W zeszłym roku mogłem wybrac między stołówką (3 posiłki) a różnego rodzaju przekaskami - a nawet w rozsądnej ilości 1 soku ze świerzych pomarańczy dziennie było to za darmo. W tym roku stołówka jest nadal wliczona w cene a darmowość przekąsek została zlikwidowana w ramach walki z fast foodem (są płatne). Trochę mnie to denerwuje bo dzisiaj 4 raz był hamburger w stołówce (można jeszcze wybrać makaron z sosem grzybowym) a soku nie mam za darmo.
Tak właściwie to mam takie pytanie - jakie szanse ma sok za 1.32 w porównaniu do coli za 0.55. Zakładam wiek u którego ma miec lub nie mieć powodzenia na 7-19. A ile sok za 0.00 w porównaniu do coli za 0.55(była płatna w zeszłym roku)?
Wczoraj miałem przyjeny wieczór - ktoś grał na gitarze. Tylko czemu tak głośno i dlaczego ten wieczór był po pólnocy?
Ostatnio zastanawiałem się, czy da się połączyć GSlice i operator new w C++. Kod wydawał by się bardzo prosty:
Mam dostep w bibliotece do jednej z polskich tygodników (nie chce wymienać nazwy bo jeszcze zostane wyzwany od prawicowych/lewicowych/liberalnych/konserwatywnych etc. nieoptrzebne skreślić oszołomów). Ktoś w związku z tym zapytał się, czy umiem czytać po polsku. No i co tu odpowiedzieć? Że przeglądam dla przyjemności? ;)
Zainteresował mnie na razie problem następujący: W mieście istnieją dwie firmy transportowe - A i B. Prawdopodobieństwo, że następnym autobusem będzie autobus A jest p a B (1 - p). Chcemy oczywiście kupić autobus częściej pojawiającej się linii. Obserwujemy n autobusów i jeśli autobusów A jest więcej niż B to kupujemy bilet okresowy dla A. W przeciwnym wypadku kupujemy B. Jeśli jest ich tyle samo to kupujemy losowo.
. W prosty sposób możemy zobaczyć, że dla jednego autobusu otrzymamy dokładnie prawdopodobieństwo p i (1-p). Dla dwóch wynik jest taki sam. Maxima niestety nie potrafi udowodnić dla funkcji tak zdefiniowanej (potrzeba mieć plugin do odtwarzania MathML):
Ostatnio męcze się, gdyż nie mogę za żadne skarby zdobyć dobrej kawy. Główny problem to mleko - mam dostęp do dwóch rodzajów zimnego i prawie mrożonego. Nie da się ustawić minimalnej proporcji kawa/mleko. O kawie idealnej (rozpuszczona w mleku a nie w wodzie - gdybym spróbował zrobić coś takiego z tą otrzymałbym zimne mleko z domieszką kawy) nie ma co mażyć. Gdyby chociaż kawa była dobra...
W poprzednim wpisie(Gentoo - po prostu działa) miałem za złe Archowi, że nie łączył z siecią WiFi. Naszczęście nie miałem racji (zwracam honor Archowi) - nikt nigdzie nie powiedział, że karta(MAC Address) musi być zarejestrowana (sieć była widoczna bez żadnych WEP/WPA/WPA2, AP w widocznych miejscach etc.).
Z Archem nie działa z niewiadomych przyczyn karta WiFi (uszkodzenie podczas lotu?). Również nie do końca działa usb-storage z kernelem suspend2 (tzn. raz zadziałał a wczoraj nie chciał - nie wykrywał urządzenia). Gnash też nie działa (w wersji na której na tych samych strona na Gentoo działał).
Na Gentoo nie działały mi dwa programy (używałem testowej wersji): mail-notification i gnash(problemy z kompilacją). Zostanę chyba przy nim...
PS. Mam zamiar pożyczyć kartę PCMCIA - może ona zadziała...
Zmieniłem dystrybucje na ArchLinux. Natrafiłem na kilka problemów:
Z drugiej strony jest szybki i sprawny. Na razie mam 5 tygodni przymusowego testu(patrz ptk. 3).
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ść?
Zastanawiam się nad zmianą dystrybucji (dotychczas korzystałem z Gentoo). Dosyć mnie zainteresował Arch Linux - ktoś może zna go? Czy jest tam wkompilowana obsługa IPv6?
Przez jakiś czas puste linijki kodu nakładały się z zapełnionymi. Teraz ta 'funkcjonalność' została usunięta - oto rozwiązanie:
li > code {
min-height: 1em;
}]]>
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'):
Wczoraj wróciłem po tygodniowej nieobecności. Jedną z pierwszych rzeczy jest oczywiście emerge -avDuN world. Jednak na kompilacji OpenJDK ciągle wywalało brak miejssca na dysku. Wiele zużytego miejsca znalazłem w /var/log. rm -rf /var/log/* oczywiście nie dało rezultatu - w końcu pliki były otwarte...