Archiwum
- Sierpień 2008 (4)
- Lipiec 2008 (5)
- Czerwiec 2008 (3)
- Maj 2008 (1)
- Kwiecień 2008 (2)
- Marzec 2008 (3)
- Luty 2008 (9)
- Styczeń 2008 (2)
- Grudzień 2007 (2)
- Listopad 2007 (3)
- Październik 2007 (6)
- Wrzesień 2007 (8)
- Sierpień 2007 (5)
- Czerwiec 2007 (1)
- Maj 2007 (10)
- Kwiecień 2007 (5)
- Marzec 2007 (26)
- Luty 2007 (21)
- Styczeń 2007 (11)
- Grudzień 2006 (4)
- Listopad 2006 (9)
- Październik 2006 (6)
- Wrzesień 2006 (2)
- Lipiec 2006 (1)
- Czerwiec 2006 (13)
- Maj 2006 (2)
- Kwiecień 2006 (9)
- Marzec 2006 (1)
- Luty 2006 (2)
- Styczeń 2006 (17)
- Listopad 2005 (5)
- Październik 2005 (1)
- Sierpień 2005 (1)
- Lipiec 2005 (17)
- Czerwiec 2005 (2)
- Maj 2005 (4)
- Kwiecień 2005 (4)
- Marzec 2005 (7)
- Luty 2005 (20)
- Styczeń 2005 (24)
- Grudzień 2004 (21)
- Listopad 2004 (25)
- Październik 2004 (22)
- Wrzesień 2004 (38)
- Sierpień 2004 (5)
Kategorie
- Batalie (23)
- Emigracja (50)
- Komercha (4)
- Ogłoszenia (19)
- Ogólne (229)
- Opowiadacze (13)
- Pieprzenie (29)
- Podróże (23)
- Prasówka (6)
- Programowanie (39)
- Cocoa (14)
- iPhone (2)
- Mac OS X (17)
- Obj-C (12)
- Technikalia (21)
Czytam
Chęściowo rosterowo
Częściowo roster już działa, ale jeszcze nie do końca. Na razie tylko go ściąga. Teraz pora na połączenie rostera z presence, żeby w strukturach były trzymane informacje na temat użytkownika, jego zalogowanych zasobach itp. To będzie dobre. Do tego dołoży się iq:version i zrobi się pełen automat :)
Do tego muszę zmodyfikować lekko API. Muszę dołożyć jeden parametr do tworzenia kontekstu - język. To ważny element, który kompletnie wypadł mi z głowy... :)
Deadlocki
Mnie wykańczają. Na szczęście w końcu znalazłem chwasta i wyrwałem. Problem z głowy :) Zserializowałem też pisanie do socketa. Przecież przy wielowątkowości się to zepsuje ani chybi :) Pozostało odpalanie zdarzeń w osobnym wątku kolejkowanym i sprawa będzie z głowy. Potem w końcu będę mógł przejść do jabber:iq:roster, skonczyć to i wydać nową, już używalną wersję :)
Kompatybilność z Mac OS X
Udało się. Naprawiłem burolki. Po prostu niektóre struktury są na maczku trzymane w innych plikach nagłówkowych. Naprawione i pozamiatane. Co prawda są jeszcze jakieś problemy, ale sądzę, że to też się z czasem naprawi. Na razie mam ważniejsze naprawy do wykonania. No i implementacja jabber:iq:roster :)
Chwilowo - zmiany poszły na CVS.
jabber:iq:version
Działa i to fajnie. Problem w tym, że przy testowaniu okazało się, że na maczku inaczej się operuje na strukturach socketu. Zły jestem. Muszę poczytać trochę znów.
Ble.
Faszystowska nadgorliwość
Fajnie. Tylko, że jeszcze potrwa zanim ktokolwiek tego będzie mógł wygodnie użyć :)
Najważniejsze TODO
Najważniejsze - przejście na kontekst - zakończyło się sukcesem. Ale to nie koniec zmian. Na pewno to już koniec zmian w API, ale nie w samej strukturze biblioteki. Będzie musiało powstać znacznie więcej wątków. Wątek, który czyta i wrapuje zwrotki zostanie jak jest. Z tą różnicą, że zamiast samemu wywoływać callbacki będzie przekazywał odczytane elementy do kolejki fifo, która będzie obsłużona przez inny, zupełnie osobny wątek.
Geneza problemu naświetlona mi przez patrysa (znowu) jest prosta. Jeśli funkcja callbackowa będzie za duża i za długo będzie trwała, to połączenie TCP po prostu padnie. To samo tyczy się wysyłania. Muszę zserializować funkcję wysyłającą zwrotki, bo się bardzo łatwo może coś zwyczajnie zepsuć.
Z ciekawostek ważne jest to, że działa. Jeśli uda mi się spiąć siedzenie w troki to może dziś nawet odpalę już jabber:iq:version i jabber:iq:roster. Będę mógł ze spokojem sumienia złożyć paczkę i ją wystawić, choć do prawdziwej używalności jeszcze jest daleka droga.
BTW: Jest ktoś biegły w autotoolach, bo nie mogę sobie z paroma rzeczami poradzić...
Przesiadka na kontekst
Udana!
Pozostały mi już tylko stare błędy! Cieszę się jak dziecko :D
(23:49:38) Patryś: jestes leniwym programista
(23:49:54) Patryś: nie myslisz kodem tylko efektami
(23:50:17) Patryś: w podstawowce mnie nauczyli ze to jest leniwy programista
(23:50:29) Patryś: pokaze kierunek, a inni przepisza jego kod od zera po ludzku
(23:50:53) bazyl: ej, mistrzu
(23:51:22) bazyl: generalnie robię to wszystko po raz pierwszy w życiu
(23:51:29) bazyl: to mój pierwszy większy projekt w C ;]
(23:52:07) Patryś: no to czekam jak w wieku 40 lat jako jeden z FORTUNE 1000 bedziesz dziekowal mi w jakims publicznym wystapieniu
(23:52:23) bazyl: nie licz na to (23:52:28) Patryś: za to ze swa ironia, cynizmem i sarkazmem zmotywowalem cie do pracy
(23:52:30) Patryś: ;]
(23:52:46) bazyl: hm
(23:52:53) bazyl: nie, to mnie raczej nie motywuje
(23:53:16) bazyl: jestem zdeterminowany samym sobą jestem. A ironia cynizm i sarkazm robią we mnie zupełnie odwrotne odruchy
Praca
Nudzi mnie coraz bardziej.
Ciekawe jest to, że w ciągu ostatnich dwóch dni dostałem dwie propozycje pracy. Jedną w Polsce i jedną w Anglii. Czekam na szczegóły. Może się zrobi ciekawiej :)
Walki na froncie
I stało się.
Prace ruszyły kompletnie pełną parą. Brak uploadów na CVS spowodowany jest głównie faktem, że zmiany, które wprowadziłem nie pozwalają zbytnio na kompilację biblioteki. Dlaczego? Pierwszym punktem było wywalenie wszelkich zmiennych statycznych i stworzenie kontekstu dla połączenia. Dzięki temu biblioteka jest reużywalna i co najważniejsza - można się połączyć do kilku serwerów jednocześnie.
Dodatkowo potrzeba była na skonstruowanie odpowiedniego pliku nagłówkowego, który przetrzymuje wszelkie interfejsowe deklaracje srtuktur i funkcji.
O ile drugi punkt jest praktycznie już zakończony, tyle przebudowa rozwiązania na kontekstowe wywołania zakrawa o delikatny sadyzm. Znacznie wygodniejsze było by rozwiązanie z pomocą klas. Jednak ja piszę w golusim C, głównie dlatego, że potrzebuję takiego rozwiązania do późniejszych implementacji. Nie upraszcza to sprawy w żaden sposób, ale jest nawet czytelne.
Sądzę, że potrzeba jeszcze kilku dni, zanim biblioteka w pełnej obudowie autotoolowej, instalowalna i działająca bez zarzutów pojawiła się na CVSie i jako paczka do ściągnięcia. A należy to zrobić jeszcze zanim zostaną rozpoczęte prace nad interfejsem użytkownika.
Aktualne TODO zawiera następujące punkty:
- Zakończyć przebudowę na rozwiązanie kontekstowe
- Dodać obsługę jabber:iq:version w module iq
- Dodać moduł obsługi rostera
Dopiero potem zostanie utworzona paczka 0.1. Już używalna, ale pozostanie do miłej funkcjonalności jeszcze:
- Obsługa SASL auth
- Obsługa TLS
- Obsługa disco
- Obsługa xforms
Oj, długa walka jeszcze przede mną. Bo w sumie uzyskanie wszystkich tych elementów to też jeszcze daleko od końca jakiejś wygodnej obsługi biblioteki. Ale uzyskanie tej funkcjonalności pozwoli mi na rozpoczęcie prac nad budową jakiegokolwiek GUI.
Trzymać kciuki :)
Walki z pierdołami
To jest jednak irytujące.
Z niewielką pomocą przyjaciół udało mi się wyeliminować wszystkie wycieki pamięci i segv'y. Biblioteczka działa. Problemem pozostał server berlios'a, który chyba zapomniał o mnie totalnie. Muszę chyba kogoś kopnąć w zadek :P
Konto projektu na berliOS
W końcu! Mam już konto projektu na berliOS. Niah niah! Jak tylko wyeliminuję ostatniego core dumpa, to wrzucam pierwszą wersję pre-alpha :P
Jestem szczęśliwy :D
Test layoutu
Pobrany ze strony podanej przez zgodę. Mnie się podoba i chyba go wykorzystam do strony projektu :) If you don't mind :)
Layout strony projektu
Szukam pomocy do stworzenia witryny projektu biblioteki Jabbah. Każda pomoc będzie nieoceniona :)
Jabbah ożył
Biblioteka jabbah ożyła. Potrafi już się podłączyć do serwera, zalogować (niestety jeszcze nie SASLem tylko poprzez JEPowego IQ). Można już zarejestrować funkcje na przychodzące wiadomości i zmiany stanów. Można te stany sobie ustawiać i wysyłać różnego rodzaju wiadomości. Dziś będzie można już ściągnąć roster.
Po prostu pięknie. Szczególnie, że przygotowałem się również na połączenia szyfrowane, które będą dostępne również już dziś. Chyba pora się w końcu projektem podzielić ze światem. Nie wiem tylko jeszcze gdzie ten projekt zarejestrować. Szczególnie, że JabberStudio milczy, jak się wysyła prośbę o założenie takowego.
Jakieś pomysły?
Wyznanie
Przyznaję się bez bicia. Nie potrafię się już bawić...
Wtajemniczeni zrozumieją
- Zmiana pracy
- Wyprowadzenie się z mieszkania
- Szybkie awanse
- Samotna podróż przez pół Europy w samochodzie bez mapy
- Zmiana kraju zamieszkania
Ja muszę być rzucany na głęboką wodę, żebym czuł, że jeszcze umiem pływać...


