Od dawna już nie mam czasu rozwijać USMS, ale ostatnio - za popartą pieniędzmi namową pewnego człowieka - postanowiłem uaktualnić wszystkie bramki, dorobić prostą funkcjonalność i wszystko wypuścić. Niestety, to co zobaczyłem było znacznie ponad moje możliwości.
Próbowałem napisać bramkę do Play24.pl - doszedłem do momentu potwierdzania wysyłki i nie udało mi się dalej, ani za pomocą parsera formularzy HTML, ani nawet wysyłania hardkodowanych requestów wygenerowanych na podstawie zrzutu protokołu z przeglądarki. Po prostu zabezpieczenia przerosły możliwości obsługi libcurl. Bramka Plusa wyglądała podobnie, jeśli nie gorzej.
Naturalnym krokiem byłoby używanie kontrolki przeglądarki, ale tutaj znów pojawia się problem - API które Microsoft udostępnia natywnym (Win32) programom nie posiada selektorów ani innego zaawansowanego DOM, tylko chodzenie po drzewie w stylu libxml. Czyli znów musiałbym pisać prawie że logikę przeglądarki. Poza tym, pewnie byłyby problemy z uruchomieniem na Wine - a przecież Windowsa nie używam już od prawie dwóch lat, a program napisałem głównie na własne potrzeby.
Jedynym rozwiązaniem wydaje się przepisanie programu od nowa w .NET i użycie dostępnej tam zaawansowanej kontrolki IE. Ale nie dość że nie mam na to czasu, na dodatek - znów działałoby to jedynie w Windowsie.
Pewną alternatywą byłoby napisanie rozszerzenia do którejś z przeglądarek (widget Opery brzmi sensownie), wtedy byłoby multiplatformowo, może ergonomicznie (ciekawe czy aż tak jak w oryginale) i dostępna byłaby przeglądarka. Tutaj dwa problemy to właśnie ergonomia (czyli główne założenie USMSa) i mój wstręt do webu/javascriptu.
Dziękuję więc wszystkim którzy wspierali za dobre słowo, wszystkim którzy zgłaszali poprawki - za poprawki, sponsorom - za wsparcie, użytkownikom - za korzystanie z programu. Pięć lat rozwijania USMS wiele mnie nauczyło, a przede wszystkim dało wiele satysfakcji. To chyba najbardziej powszechnie używany z moich programów.
Jeśli będzie jakiś remake, dam znać tutaj, ale nic nie obiecuję.
Dla tych, którym program nie ruszył z powodu dziwnego błędu Windowsa: jest (w menu po lewej) dostępna nowa wersja, zbudowana w Visual Studio 6 - nie powoduje już tego problemu. Działała mi również pod Wine 1.0 pod Debianem.
Dodałem do programu obsługę bramki SMSFree.pl (dzięki dla Bartka za cynk, i ogólnie za pomoc w testowaniu nowych wersji). Jest to bramka z płatną rejestracją (SMS o treści DA.BRAMKA.DA na 7137, 1.22 zł), która następnie udostępnia 5 darmowych wiadomości dziennie. W programie nie są obsługiwane płatne wiadomości, a także SMSy poza Polskę - to drugie, chwilowo.
Poza tym, napisałem (po stracie kodu od poprzedniego) nowy system update'ów na serwerze, więc powiadamianie o nowej wersji będzie znów działało z poziomu programu.
Z miłych drobiazgów, bramki SMSBox i SMSFree logują się teraz tak jak wszystkie pozostałe, czyli z wyprzedzeniem, a nie dopiero w momencie wysłania wiadomości. W przypadku SMSBoxa, dość znacznie przyśpiesza to wysyłanie pierwszego SMSa. A bramka Plusa już przetestowana - działa OK.
Link do nowej wersji - jak zwykle po lewej, w kategorii "Linki".
Przez jakiś czas byłem bardzo zajętym człowiekiem (więc nie było kiedy poprawiać programu) a na dodatek linuxowcem (więc w sumie go nie potrzebowałem). Teraz, korzystając z chwili wolnego czasu, poprawiłem wtyczki: zwykła bramka Orange i Orange MultiBox. Poprawek nie wymagały: Era Omnix, SMSBox oraz Wapster. Nie wiem jak się ma sprawa ze zwykłą bramką Plus GSM, bo nie miałem chwilowo z kim potestować czy działa. Pozostałe wtyczki nie działają i w najbliższym czasie nie będą rozwijane.
Być może napiszę też wtyczkę do SMSFree.pl.
Paczka ze świeżą instalką do pobrania tutaj.
EDIT: poprawka, poprzednio byl niewlasciwy URL do pliku
Ciekawostka: motywacją do powstania USMSa było wysyłanie życzeń sylwestrowych. Chciałem wysłać każdemu życzenia indywidualne, ludzie mieli różne sieci komórkowe, wysyłanie ze stron WWW było straszną bolączką, a dostępne ówcześnie programy do wysyłania wiadomości nie obsługiwały wielu profili oraz nie potrafiły cache'ować CAPTCHA, więc przy 128 kbit/s była to masakra.
Wersja 20071111 jest dostosowana do zmian na stronie Orange.
Cierpię na chroniczny brak czasu, ale Tomek który komentował niżej proszony jest o kontakt w sprawie plugina Miasto Plusa.
Poprawiłem błąd powodujący wysypywanie się czasem pluginu Orange podczas dłuższych sesji działania programu. Poprawkę można zaaplikować ściągając instalator (po lewej) lub sam plugin.
Poprawiłem błąd objawiający się gubieniem haseł, w szczególności Ery. Do pobrania: sam plik DLL do podmienienia (49 kB) lub cały nowy plik instalacyjny (2.1 MB).
Ponieważ tym razem Woland obiecuje stworzyć linuxowe GUI dla USMSa, postanowiłem jemu (czy kto tam się jeszcze do tego zabierze ;) ułatwić zadanie. Napisałem szkic dokumentacji do programu. Literatura piękna to nie jest, ale powinno spełnić swoje zadanie.
Pracuję też nad usunięciem błędów ujawnionych w architekturze 64-bitowej.
Nowy operator na rynku, przydałaby się więc nowa bramka w USMS. Niestety, strona Play twierdzi, że:
Opłata za SMS'y i MMS'y wysłane z Bramki jest taka sama jak za wiadomości wysyłane z telefonu.
co nie jest jakąś szczególnie dobrą wiadomością.
Jak więc wysyłać z programu SMSy do Play?
Chyba jedyną całkowicie darmową dla użytkowników wszystkich sieci możliwością jest rejestracja na Wapster.pl (oraz wprowadzenie danych konta do USMS) i korzystanie ze śmiesznych czterech wiadomości miesięcznie. Dobrą, choć jednorazowo płatną alternatywą, jest Smsbox.pl i 5 wiadomości dziennie. Użytkownikom Orange i Plusa pozostają jeszcze Orange MultiBox oraz Miasto Plusa.
Do programu dodana została bramka SMSBox.pl (płatna 2,44 zł przy rejestracji, ale za to bardzo szybka. Limit 5 smsów dziennie) oraz zaktualizowana do zmian na stronie bramka Wapster.pl. Pożegnaliśmy się za to z sms.ikp.pl z której wiadomości i tak nie dochodziły. Nowa wersja do ściągnięcia w tradycyjnym miejscu. Dodam jeszcze, że smsbox.pl ma charakter testowy i ma prawo działać nieprawidłowo, co prosiłbym zgłaszać.
Po długiej przerwie spowodowanej padem serwera, umieszczam wersję USMSa z drobnymi poprawkami: długo oczekiwane menu z kopiuj/wklej itd (o którym zawsze zapominałem ;) oraz adresy update'ów zmienione na nowy serwer.
W tej chwili, ponieważ pogubiłem wszystkie dane ze starego serwera, włącznie z większością skryptów, update nie działa - jednak jeśli ściągniesz najnowszy build, informowanie o uaktualnieniach powinno zacząć działać jak tylko napiszę od nowa skrypty. Do tego czasu, proponuję informacji o programie poszukiwać tu, najlepiej zapisać się na kanał RSS.
Poszukiwani są też chętni do zrobienia portu na wxWidgets.
Od pewnego czasu kody źródłowe wersji Linuxowej i Windowsowej są wspólne, jednak ponieważ rozwój odbywa się tylko na Windowsie (a użytkownik wersji linuxowej jest tylko jeden ;), najnowsze kody źródłowe nie zawsze kompilują się na Linuxie.
Wczoraj Paweł Wiśniewski pogrzebał przy Makefile'ach i kodach źródłowych, dzięki czemu znów się budują na Linuxie, a dziś próbujemy połączyć zmiany i rozwiązywać konflikty na SVNie. W ciągu kilku dni powinna się pojawić nowa wersja na stronie, a nieco później przywrócę do życia repozytorium Subversion.
Jeśli w końcu będzie mi się chciało dopisać porządną obsługę wielu użytkowników, pewnie zrobi się z tego paczkę i doda do PLD. Paweł z kolei grozi, że dopisze interfejs na ncurses, ja może w końcu zrobię coś na WX-ach i będzie wesoło :)
Do ściągnięcia build 811 z wszystkimi nowościami, o których pisałem poniżej.
Dopisałem dość specyficzną obsługę hotkeyów - klawiszy które wciśnięte w dowolnym programie, przywołają na wierzch USMSa. Działają od builda 811 wzwyż (zostanie upubliczniony wktótce).
Jak więc ustawić sobie hotkeya? Należy mieć na pulpicie (!) skrót do programu. Teraz prawym przyciskiem myszy na ikonę, "Właściwości" i widać pole "Klawisz skrótu". Wciskasz klawisz, który powinien przywoływać program (uważaj żeby nie wybrać którejś z liter, które wciśnięte z Altem tworzą polskie litery - a, s, o, l itp.). Po zatwierdzeniu wyboru sprawdzasz czy program się uruchomi korzystając ze skrótu ctrl-alt-litera bądź prawy alt-litera. Jeśli nie - a to całkiem możliwe, Windows miewa swoje humory - wybierz inną. Ze swojej strony polecam klawisz ` - jest umieszczony w lewym górnym rogu klawiatury w związku z czym łatwo w niego trafić.
Jeśli uruchomienie programu działa - powinno być możliwe też jego przywołanie. Schowaj go np. do ikony w trayu i sprawdź czy kombinacja poprawnie go wywołuje.
Teraz trochę technikaliów.
Najwięcej problemów było z przywróceniem okna na wierzch - niby prosta sprawa, ale Windowsy od 98 wzwyż mają zapobieganie "focus stealing" - przejmwowaniu kontroli przez inne okno, jeśli aktualnie aktywne jest pole tekstowe w innym. Własnymi siłami się nie udało, na szczęście był jeszcze Google. Hack jest potężny.
Są też hotkeye windowsowe, dostarczane przez WM_SETHOTKEY, ale tutaj pojawia się problem tego, że wiadomości nie dochodzą jeśli zrobi się ShowWindow(hwnd, SW_HIDE) - a tak się właśnie dzieje jeśli program schowany jest do traya. Można ewentualnie przemyśleć użycie ujemnych współrzędnych okna, ale wydaje mi się to bardzo nieeleganckie.
W najbliższym czasie można się spodziewać kolejnego release'u USMSa, prócz rzeczy wymienionych w poprzednich wpisach, będzie miał też bardziej użyteczne usprawnienia:
Pierwsze z nich to podpowiedzi przy wpisywaniu numeru nadawcy.
Jeśli zaczniesz wpisywać numer telefonu, USMS sprawdzi czy podobny
jest już w twojej książce telefonicznej bądź w historii numerów na
które ostatnio wysyłałeś, i podpowie ci te numery. To samo stanie
się jeśli zaczniesz wpisywać nazwę z książki telefonicznej:

Drugie z nich to drobiazg, którego zaczęło mi jakiś czas temu
brakować - możliwość kopiowania numerów z listy do schowka bądź
wstawiania ich w prosty sposób w treść pisanej wiadomości. Niby nic
nadzwyczajnego, a oszczędza sporo czasu.

Zapraszam do komentowania, podsyłania pomysłów i zgłaszania błędów. A Joggerowcom należy się małe wyjaśnienie - program ma już ponad półtora roku i jest chyba najbardziej ergonomicznym narzędziem do wysyłania SMSów jakie znam.
Spiderowi dzięki za zapłacenie za to konto na Joggerze :)
Dziś trwa zabawa związana z pisaniem OCRa dla tokenów Orange. W
tym celu, trzeba zebrać kolekcję literek wzorcowych.
A robimy to następująco: Numer raz, pobiera się paczkę.
Numer dwa, po rozpakowaniu uruchamiamy specjalną (niefunkcjonalną i pewnie wieszającą się) wersję usmsa na jakąś minutę, po czym wyłączamy ją ciesząc się pięknym komunikatem o błędzie.
Numer trzy, patrzymy do katalogu gdzie był rozpakowany jakimś totalcommanderem, zaznaczamy wszystkie pliki o rozszerzeniu tga i zgrywamy je do jakiegoś katalogu
Numer cztery, ulubionym programem graficznym (np. Ifran View) konwertujemy obrazki do formatu PNG.
Numer pięć, rozpakowujemy program o nazwie funk i do jego katalogu o nazwie src-img wrzucamy powstałe przed chwilą obrazki
Numer sześć, włączamy sam program (funk.exe) i przepisujemy tekst z obrazków (enter działa). Wbrew pozorom, bardzo szybko to idzie, tylko najlepiej się nie mylić ;)
Numer siedem, wchodzimy do katalogy dst-img. Otwieramy powstałe
pliki ulubioną przeglądarką grafiki. Sprawdzamy (wszystkie) czy ich
zawartość zgodna jest z ich pierwszą literą nazwy pliku.
Na przykład, ta literka A jest OK:

Ta z kolei nie nadaje się, bo poza "A" zawiera jeszcze inną literę.
Kwalifikuje się zatem do wykasowania (albo edycji w paincie, jak
kto woli):

Tak przygotowane literki są gotowe do wysłania mi :)
Na moim domowym komputerze uruchomiłem repozytorium Subversion z
kodem USMS, jest do odczytu dla wszystkich. Adres to:
svn://gdr.1.vg/usms
Jako że to komputer domowy, repo nie będzie dostępne w sieci cały
czas.
Dziś dopisałem obsługę "ulepszania" obrazków z bramki Idei na
Windowsie. Wcześniej bawiłem się tym na Linuxie, ale zrobiłem parę
błędów przez które nie działało to na wersji Windowsowej.
Zastanawiam się jeszcze czy domyślnie włączyć to "ulepszanie",
ponieważ mogłoby być dziwne dla początkujących użytkowników.
Anyway, wszystko jest kontrolowane przez następujące opcje w pliku prefs_main.xml:


A to wszystko w następnym wydaniu programu :)