Programming
Stamina.lib / K.API – kontrola wersji
Monday, January 30th, 2006W nowym K.API bardzo istotna jest skuteczna kontrola wersji, bo jak wiadomo różnice pomiędzy różnymi wydaniami bibliotek mogą prowadzić do (znacznych) niestabilności. Przydatna byłaby również możliwość zablokowania konkretnych wersji, w których występują znane nam już błędy. Typowym rozwiązaniem jest porównywanie wersji API programu i wtyczek. W tym wypadku jest jednak zupełnie niewystarczające.
Spójrzmy na przykład na wtyczkę kSound – wykorzystuje do działania tylko podstawowe elementy API. Jeżeli np. zostaną wprowadzone większe zmiany w API obsługi plików .dtb – podniesienie numeru wersji całego API spowoduje konieczność ponownej kompilacji i dystrybucji wtyczki. Można oczywiście zdefiniować i sprawdzać kilka wersji newralgicznych podsystemów, ale myślę, że najlepsze rozwiązanie zostało wbudowane w Stamina.lib.
Stamina.lib – podstawy
Saturday, January 28th, 2006Od dłuższego już czasu pracuję nad biblioteką Stamina.lib – będącej z założenia zbiorem klas ułatwiających obiektowe pisanie w C++. Założenie trochę się rozrosło, bo obecnie jest tu bardzo przyjemna obsługa wątków, plików .dtb, obrazów, zaczątki obsługi okien (które były pisane trochę “na gorąco” i w swoim czasie będą musiały być przekonstruowane ;) ) i masa innych przyjemności. Czemu pisać kolejną tego typu bibliotekę? Dobre pytanie :) Myślę, że chociażby dlatego, bo nie mogłem do tej pory znaleźć takiej, która posiadałby wszystkie poszukiwane przeze mnie cechy. Większość nie ma wiele wspólnego z obiektowością (GLib), inne z kolei są przeszablonowane i miejscami mało wygodne (boost). Wszystkie za to łączy jedna cecha – praktycznie w ogóle nie stosują czystych interfejsów. Być może gdzieś tam istnieje dokładnie to czego szukam – niestety nie było mi się dane na to natknąć, ani specjalnie intensywnie nie szukałem… Stamina.lib jest już faktem, a rozwija się dzięki pracom przy nowy API Konnekta (którego bez s.l już skompilować się nie da…).
Biblioteka jest co prawda wciąż w trakcie tworzenia (a co za tym idzie permanentnej przebudowy), to pewne jej elementy wydają się już na tyle stabilne, że można o nich cokolwiek napisać. Ten wpis będzie ewidentnie dla C++Geeks, więc takowych zapraszam dalej – inni z ciekawości też mogą popatrzeć co się gotuje :) Czytaj dalej »
String pełen Staminy
Monday, September 5th, 2005Jak zapowiadałem wcześniej pochwalę się troszeczkę moim nowym tworem – grupą klas do obsługi tekstu w bibliotece Stamina.
Założenia były takie: szybka klasa silnie oparta o template’y, alokacja/dealokacja niezależna od biblioteki (słynny problem z plikami .dll), przeźroczysta obsługa kodowań 8 i 16 bitowych w jednym obiekcie, przeźroczysta konwersja pomiędzy kodowaniami 8 bitowymi (np. win-1250 < -> UTF8), teoretyczne przygotowanie do obsługi kodowań o zmiennej szerokości znaku, zestaw podstawowych funkcji do obsługi tekstu, optymalizacje pod kątem nie robienia kopii tekstu przy każdej okazji…
Czytaj dalej »
Obiekty automatyczne w C++
Tuesday, July 19th, 2005Potrzebowałem zrobić automatyczne zbieranie informacji o używanych elementach Stamina.Lib. Miało to polegać na tym, że wystarczy dołączyć nagłówek jakiegoś modułu, aby informacje o nim (konkretniej nazwa i wersja) pojawiły się na specjalnej liście (która później służy do porównywania zgodności wersji, blablabla blablabla)… Jako że sprawa nie jest tak prosta jak mogłoby się wydawać zajęło mi to chwilę czasu i przyniosło mnóstwo nowej wiedzy, którą za chwilę zamierzam się z Wami podzielić…
Czytaj dalej »
