#eksperymenty

wszystkie notatki oznaczone etykietą "eksperymenty"

Dwuwymiarowe tablice dynamiczne

Potrzebuje jakiejś ciekawej, prostej i optymalnej implementacji tablicy dwuwymiarowej do przechowywania prostych elementów lub wskaźników. Najprostszym rozwiązaniem byłoby wykorzystanie kontenerów z STL: std::vector<std::vector<Element*> > array Szybko i prosto, tylko używać. Ale pojawia się problem, bo chciałbym, aby pojedyncza linia zachowywała się jak czysta tablicą w stylu C (wymagania API). Także można by bez problemu zastosować vectora w vectorze, ale… ale o tym później. Moja obecna i pierwsza implementacja takiego kontenera oparta jest na vektorze, który zawiera wskaźnik na alokowana dynamicznie tablice wskaźników do elementów.

Czytaj dalej

Proste haszowanie stringa

Haszowanie stringów z wykorzystaniem prostego algorytmu Roberta Sedgwicksa z książki “Algorithms in C”. Według testów różnych prostych algorytmów opublikowanych na stronie Hash Function Efficiency, można zauważyć, że to właśnie RS jest prostym i mało kolizyjnym algorytmem. Dlatego wybrałem go do użycia w swoim projekcie, do haszowania nazw funkcji serwisowych, eventów, hooków. Jego najprostsza implementacja w C++: unsigned int RSHash(char* str) { unsigned int a = 63689; unsigned int b = 378551; unsigned int hash = 0; while (*str) { hash = hash * a + static_cast<unsigned char>(*str); a = a * b; str++; } return hash; } W źródłach mirandy, użyty przez nią algorytm znalazłem w wersji C i Asemblera, więc naszła mnie mała ochota, aby mój algorytm również nieco zoptymalizować i przy okazji przypomnieć sobie bebechy asemblera ;)

Czytaj dalej

Pomysł: Biblioteka inet

Mój HttpSession jest trochę “do dupy”, bo uzależniony jest od Windowsa i jego WinInet. No cóż, potrzebowałem na szybko jakąś łatwą i prostą obsługę sesji HTTP pod tymi okienkami, więc powstała ona taka jaka jest. Od dawana chodzi mi po głowie mała refaktoryzacja. Wydzielenie publicznego interfejsu i uniezależnienie się od systemu. Wersja Windowsowa oparta dalej na WinInet, a wersja Unixowa na cURL. Wtedy nawet Ci, co nie bardzo chcą patrzecć na WinInet, mogą poprzez jedną flagę wykorzystać w windowsowej wersji także cURL-a.

Czytaj dalej

Klasa LogStream

Potrzebowałem w pewnym projekcie łatwej obsługi logowania wszelkich informacji. Do tego z prostotą taką, jaką udostępniają standardowe strumienie we/wy w C++, głównie przez operator <<. Po kilku próbach implementacji, walki ze strumieniami i przeszukiwań sieci, wpadł dobry pomysł i wypadła spod klawiatury działająca implementacja ;) Klasa LogStream jest prostym dispatcherem, (proste wykorzystanie wzorca Observer), w którym rejestrujemy dowolne strumienie, a wszelkie dane otrzymywane przez obiekt “loggera” są rozsyłane do poszczególnych strumieni, zależnie od ustalonego poziomu logowania i konfiguracji danego strumienia.

Czytaj dalej

Walka z STL-owymi strumieniami

Wielkim walorem języka C++ i STL-a są strumienie. Ale chyba nie przez wszystkich są tak bardzo lubiane. Strumienie są bezpieczne i wygodne, szczególnie, gdy się je wykorzystuje w podstawowych “konfiguracjach”. Niestety, gdy chce się zrobić z nimi coś więcej to pojawiają się schody. Na pewno są upierdliwe przy jakiejś “większej” potrzebie formatowania danych we/wy. A co gorsza, gdy potrzeba napisać własny strumień lub jakąś cześć własnej implementacji do tych standardowych strumieni to trzeba się nieźle nagimnastykować, i nie jest powiedziane, że się to uda.

Czytaj dalej

Forwardowanie akcji w PHP

Od kilku dni prace nad frameworkiem (lub tym czym to na razie jest) w PHP nie posuwają się naprzód, a to z kilku powodów. Jednym z nich są napotkane trudności, a drugim inne, bardziej lub mniej ważniejsze zajęcia (m.in. grzebanie w asemblerze i “czystym” C). Mam nadzieję, że wkrótce wrócę do tego kodu. Ta wspomniana trudność, jaka mi stanęła na drodze to forwardowanie. A dokładniej to pewna sytuacja przy forwardowaniu kontrolera/akcji.

Czytaj dalej

Pseudo-inteligentny router w PHP

Wiem, że powinienem w tym czasie zamiast bawić się w PHP rozwijać te kilka ważnych dla mnie projektów w C++, ale doszedłem do wniosku, że poświęcę jeszcze trochę czasu na uporządkowanie kilku spraw i projektów, aby potem zabrać się pełną parą za komunikator ;) Notatka nie będzie dotyczyć zabaw z typowym routerem, mowa tu o komponencie/module frameworka odpowiedzialnego za obsługę żądań (requestów) i spraw związanych z generowaniem linków. Może nie jest to typowe, modelowe zadanie routera, tak czy owak w moim małym, skromnym frameworku spełnia takie funkcje ;)

Czytaj dalej

Plugin Fresty i tlenowy opis...

W piątek coś sprawdzałem w tlenie i przy okazji jakoś się zainteresowałem opisem. Te kilka wyników moich doświadczeń, głównie już znanych, ale jakoś zapomnianych przedstawiłem na forum ekipy w temacie Status opisowy w Tlenie. Niestety zawartość postu została skasowana, po tym jak poniekąd o2.pl zapowiedziało filtrację i ucinanie opisu po stronie serwera… Poniżej oryginalna treść mojego postu: Przeprowadziłem kilka testów związanych z opisem w tlenie ;) I udało mi się dokonać ustawiania i pomyślnego odebrania opisu w drugim tlenie.

Czytaj dalej

GGT - trojan przez Gadu-Gadu

Trafiłem na interesujące info o małym programiku będącym w istocie trojanem, który do komunikacji wykorzystuje sieć komunikatora Gadu-Gadu. Według oficjalnej strony autora: G@du-Ghost Trojan jest programem typu “backdoor”. Za jego pomocą można zdalnie sterować dowolny komputer z systemem Windows (zalecany WindowsXP autor nie daje żadnych gwarancji poprawnej pracy na systemach Windows 9x/ME i NT4). Po rozmowie z kumplem postanowiłem przeprowadzić kontrolowane zarażenie systemu, tak dla zabawy i eksperymentów. Oczywiście wyłączyłem antyvira, a dokładniej ochronę w czasie rzeczywistym w moim Kasperskym.

Czytaj dalej

Tlen przez PHP

Myśląc nad ostatnim pomysłem dotyczącym publikowania notek za pomocą Jabbera i przeglądając klasę do obsługi tego protokołu w PHP (class_jabber_php-0.4.2) wpadłem na nowy genialny pomysł. Mianowicie na napisanie podobnej klasy do obsługi protokołu Tlena :) Znalazłem gdzieś na forum rozwiązanie dotyczące publikacji notek na WP korzystając z Jabbera. Ktoś już napisał bota, który wykorzystuje Jabbera do publikowania wpisów na WordPressie. Ale chyba i tak sam coś spróbuję napisać do publikacji notek.

Czytaj dalej