#biblioteki

wszystkie notatki oznaczone etykietą "biblioteki"

ByteOrder - kolejność bajtów

Architektury współczesnych mikroprocesorów powszechnie używają dwóch różnych metod i konwencji przechowywania danych w pamięci, zwane “kolejnością bajtów” (byte order). Niektóre komputery umieszczają najbardziej znaczący bajt w słowie jako pierwszy (big-endian), a inne jako ostatni (little-endian). Przez większość czasu, kolejność bajtów może być ignorowana, programista nie musi się martwić o to, jaki format jest używany, ale w niektórych sytuacjach staje się to ważne. Kiedy implementujemy binarny format pliku, bibliotekę sieciową lub protokół, lub po prostu przesyłamy dane binarne miedzy innymi komputerami, musimy wziąć pod uwagę kwestie związane z uporządkowaniem bajtów.

Czytaj dalej

Active Template Library

Ostatnio bawiłem się z prostą aplikacją embedując kontrolkę Internet Explorera oraz silnik Gecko. Po raz pierwszy miałem nieco szerszy i dłuższy kontakt z technologią COM i XPCOM. I przy okazji odkryłem ciekawą bibliotekę. Nieodłączny związek z COM ma biblioteka ATL (Active Template Library), która w rzeczywistości jest zbiorem klas szablonowych języka C++ opracowanych przez Microsoft. Jak się można domyślić z nazwy, idea podobna jak w przypadku STL. Głównym zadaniem biblioteki jest ułatwienie korzystania i tworzenia komponentów w technologii COM.

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

PJSIP - SIP/VoIP framework

Hah, znalazłem fajnego liba do SIP-a - PJSIP, a pisząc dokładniej, to taki mały framework do softphone-a czy VoIP-a: Open Source, comprehensive, high performance, small footprint multimedia communication libraries written in C language for building embedded/non-embedded VoIP applications. Open source SIP stack and media stack for presence, im/instant messaging, and multimedia communication. PJSIP posiada dosyć duże wsparcie rozszerzeń i funkcjonalności oferowanych przez SIP (SIP extensions/features). Wydaje się być idealną alternatywą dla sipXtapi, który mnie ostatnio trochę drażni, a na nim to miałem oprzeć pewien projekt klienta, nad którym obecnie pracuję.

Czytaj dalej

Biblioteka Grono++

Pisałem kiedyś jakąś bibliotekę do obsługi API serwisu http://grono.net. Głównie na potrzeby aplikacji lub pluginu tlenowego na konkurs gronowy. Ale jak się później okazało plany się zmieniły i zaniechałem brania udziału w konkursie, przez co projekt biblioteki został zarzucony. Niestety przed porzuceniem projektu, został on zaaprobowany jako projekt zaliczeniowy z programowania na uniwerku, i tak się złożyło, że wczoraj musiałem istniejące źródła doprowadzić do działania na dzisiejszą prezentację projektu. Pamiętam, że w planach miał być bardziej abstrakcyjny i obiektowy model, ale ostatecznie przyjąłem kilka prostych rozwiązań, jakie zastosowałem w Pinger++.

Czytaj dalej

Biblioteka Pinger++

Wypuściłem na LGPL-u napisaną w języku C++ bibliotekę Pinger++ służącą do łatwej komunikacji z serwisem http://pinger.pl. Biblioteka implementuje w pełni publicznie dostępne API serwisu, a nawet trochę więcej niż zawarto w dokumentacji dostępnej pod adresem http://pinger.pl/_/main/api. Wymiana danych następuje w formacie XML, do którego parsowania użyto libxml2, a obsługę sieci i sesji HTTP dostarcza moja prosta klasa HttpSession. Ze względu, iż Pinger++ implementuje w pełni API serwisu, a metody i ich argumenty odpowiadają znaczeniowo informacjom zawartym w dokumentacji API, dlatego aktualnie zrezygnowano z jakiejkolwiek dokumentacji biblioteki.

Czytaj dalej

Klasa HttpSession

Do bibliotek pisanych w C++ typu grono, pinger i blip potrzebowałem jakiejś prostej i obiektowej obsługi sieci, sesji HTTP. Oczywiście nie będę się męczył z gołym WinAPI. A także, aby w jakimś stopniu zapewnić przenośność głównej biblioteki, w jakich będzie wykorzystywana sieć, zaimplementowałem sobie prostą klasę HttpSession ;) Korzysta ona z WinINet, więc sama obsługa sieci nie jest crossplatformowa, ale każdy kto będzie chciał użyć docelowej biblioteki wykorzystującej HttpSession na innej platformie, sam sobie będzie musiał taką obsługę sieci zaimplementować, zachowując jedynie publiczny interfejs tej klasy.

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

Projekt tlenek

Kilka dni temu, chciałem sobie zaktualizować wtyczkę myself2 dla komunikatora Tlen.pl. W ogóle to chciałem ją nieco zmodyfikować, aby stała się bardziej “generyczna”, to jest, aby dodanie obsługi nowego protokołu ograniczało się do dodania identyfikatora protokołu do głównej tablicy i dodanie odpowiednich zasobów (kontrolek w dialogu opcji). Pomysł dobry, tyle, że trzeba byłoby przepisać z 90% kodu ;) Wtedy zacząłem sobie pisać jedną klasę, do łatwej obsługi okna opcji wtyczki. I zrodziła się idea, a raczej znów zaczęło chodzić mi po głowie, napisania obiektówki na API tlenowe, a może nawet coś więcej…

Czytaj dalej

Wrapper C++ do SQLite

Już zaczynałem planować tworzenie jakiegoś wrappera w C++ do bazy/sterownika SQLite-a, po części wzorowanego na wxSQLite3. Dzięki czemu mógłbym łatwo, prosto i obiektowo operować na bazie SQLite w swoim programie. Ale właśnie znalazłem już coś gotowego i do tego polskiego ;) Mowa oczywiście o ccSQLite. ccSQLite to obiektowy wrapper na interfejs C biblioteki sqlite. Znacznie upraszcza korzystanie z jej dobrodziejstw i pozwala obsługę błędów biblioteki sprowadzić do przechwytywania wyjątków.

Czytaj dalej