Wpis na 1. poziomie, wysłany 01 lipca 2006 o 19:12:41
Dwa tygodnie spania po mniej więcej 4 godziny na dobę w dwóch-trzech ratach (parę razy po prostu z czołem obok klawiatury) i jest. Można popłynąć. Od dziś rana. Na razie w trójkąciku Gdynia-Hel-Jastarnia, ale może inne trasy też powstaną. To akurat nie mój problem.
Użyte narzędzia, to Linux jako platforma operacyjna, PostgreSQL jako baza danych, oparte na Iris własnej roboty Jabber-RPC (JEP-0009) jako metoda transmisji i Qt jako interfejs. Wszystkim zarządza pracujący w centrali koordynator (bot) pilnujący, by punkty sprzedaży sprzedały tylko tyle biletów, ile jest miejsc w danym statku. Punkty sprzedaży podłączone do Internetu w dowolny sposób (gdy nie ma kabli, to GPRS), do centrali wpięte przez OpenVPN. Serwer jabbera za firewallem, oczywiście, dostępny wyłącznie z wnętrza. W przypadku braku łączności bezpośredniej można pogadać z koordynatorem telefonicznie za pośrednictwem innej placówki (TCP-over-Tamtams) lub kogoś w centrali, kto ma zwykłego jabberowego klienta. Ale w praktyce nie ma potrzeby, bo mechanizm przydzielania limitów z wyprzedzeniem pozwala na spokojną pracę nawet gdy łącze regularnie pada co pięć minut na kolejnych piętnaście.
Najważniejszą funkcją programu klienckiego jest, poza tak nieistotną sprawą, jak sprzedaż biletów, chat. Skoro Jabber, skoro sprzęgnięty z programem sprzedażowym bot jest zalogowany do serwera, skoro jakoś trzeba czasem rozsyłac informacje typu Kto, do jasnej cholery trzyma te dwa ostatnie bilety na 15? Ludzie mi tu płaczą, że do domu nie mają jak wrócić!, to dlaczego nie dać im możliwości rozmowy? Najmniej pracochłonna część roboty, a jaka radość wśród użytkowników! I jaka żałość niezmierna, gdy drugiego dnia testów pracowali już na docelowym serwerze Jabbera, a nie było na nim jeszcze MUC-a! No, tragedia, po prostu, programu używać się nie da...
Nie mają obsługi rostera (tego by jeszcze brakowało, żeby tam mieszali), nie mają możliwości adresowania wypowiedzi (poza specjalnym wywołaniem komendy dla koordynatora), piszą tylko w konferencji - w jednym pokoju, do którego ich bot automatycznie się loguje. Ale odbierają wszystko. I, jak na razie, nie czują potrzeby niczego więcej. Zwłaszcza, że tego MUC-a nie odpalili tam chyba do tej pory...
Zostało jeszcze parę drobiazgów do dorobienia, trochę szlifów, żeby wszystko było, jak trzeba i jeszcze pewnie kilka raportów (dzięki, Wass, za to menu w IE, niech go piekło pochłonie), ale można stwierdzić, że działa. 13 statków dziś odeszło, ostatni pójdzie o 20. Już ma komplet, ale zostało kilka miejsc na rowery, więc jak ktoś się dobrze przebierze, to może się dostanie na pokład. I żeby nie było: to nie jest element kampanii przeciwko homofobii!
JRPC będzie na LGPL-u. Jak Justin wyrazi chęć, to mu to przekażę. Jak nie, to wystawię gdzieś u siebie i będzie publicznie dostępne, w razie gdyby ktoś potrzebował. Wymaga tylko paru oczyszczeń ze śmieci, jakichś egzampli i dodania obsługi pozostałych typów. Potrzebowałem tylko integerów, datetime i base64, więc cała reszta jest chwilowo obsługiwana na zasadzie switch(){default: throw "pocałuj mnie serdecznie";}, ale to już drobiazgi.
A na mnie czas. Młody inżyniera wczoraj dostał, to stawia...