Kaw's Lair Kolejny blog do marudzenia

16Sie/140

Smoki i archiwum wtw

W związku z tym, że w kodzie, który obsługiwał archiwum w wtw żyły smoki, to stwierdziłem iż wypadało by to przepisać. W efekcie wyplułem jakieś 60kiB nowego kodu obsługi i pozbyłem się starego (wraz ze smokami). Teraz mamy tam gargulce. Główna różnicą jest to, że aktualnie wszystkie zapisy są wykonywane całkowicie asynchronicznie, znaczy że okno rozmowy (i konferencji) nie musi czekać aż zapis do archiwum się zakończy. W poprzedniej wersji ten mechanizm działał tylko w stosunku do niektórych wiadomości z rozmów. "Ale ale SQLite jest szybkie!" - A wcale, że nie jest, szczególnie jeśli mamy do zapisu kilkaset wiadomości jakie przybyły z blablera po połączeniu. Poza tym, jeśli mamy komunikator na pendrive, to szybkość zapisu SQLite potrafi człowieka przyprawić o ból głowy. Tak czy inaczej nowy mechanizm kolejek rozwiązuje problemy starego mechanizmu z szybkością działania (w niektórych sytuacjach), problemy z "wystąpił problem z zapisem do archiwum", który pojawił się po dodaniu synchronizacji archiwum GG, usunąłem kompletnie zbędny kod synchronizacji wątków (bo SQLite i tak jest thread safe). Wadą jest większe chwilowe obciążenie pamięci w wypadku natłoku wiadomości, ale to raczej do przeżycia. Ale najważniejsze jest to, że smoki nie moga się tam dziko mnożyć. ;)

5Sie/141

WTW: Synchronizacaja archiwum GG

Dawno nic nie było, cóż, czas coś dodać. Jeśli pleplaliśmy z kimś w pracy i wróciliśmy do domu to do tej pory nie mieliśmy rozmów z pracy zapisanych w domu, i vice versa. Od jakiegoś czasu GG zapisuje nasze rozmowy na swoich serwerach (co mogliście przegapić bo używacie wtw), to daje opcje synchronizacji danych "z chmury" i tych na dysku lokalnym, dzięki temu wszystko może być w jednym miejscu w całości, w sumie to w wielu miejscach (i w całości).
W związku z tym, że poprzednie wersje wtw nie zapisywały danych potrzebnych do wykonania pełnej synchronizacji archiwów, cały mechanizm ma pewne ograniczenia, ograniczenia te są po to aby nie wprowadzić zyliarda duplikatów  wiadomości do naszego archiwum. Dlatego też mechanizm synchronizuje (o ile jest włączony) tylko te wiadomości które dostaliśmy kiedy komunikator był wyłączony, czyli od ostatniego wylogowania do "teraz".

Poza tym synchronizacja:

  • aby działała musi być włączona w 2 miejscach, na serwerach gg (po to aby się wiadomości gdzies zapisywały i skądś mogły być pobrane) oraz w konfiguracji konta gg w wtw (domyślnie włączone);
  • zacznie działać jeśli po pierwsze zainstalowałeś nową wersję wtw i po drugie przynajmniej raz wylogowałeś się z gg;
  • startuje przy otrzymaniu informacji z serwera o tym, że AOL jest tam włączone;
  • ma pewne opóźnienie (kilka minut, znaczy nowe wiadomości nie pojawiają się natychmiast na serwerze gg), jeśli wylogowałeś się z wtw, 5 minut pogadałeś na mobilnym gg i natychmiast włączyłeś wtw - wiadomości mogą się pobrać dopiero przy kolejnym logowaniu;
  • Tekst wiadomości jest pozbawiany formatowań html zgodnie z ustawieniami dla wiadomości otrzymywanych normalnym protokołem komunikacji gg;
  • Kasowanie nie działa, znaczy działa ale nie działa. :D Tj, jeśli rozmowy zostały zaimportowane z GG a potem usunięte w archiwum online - zostaną lokalnie. Tak ma być, to jest po to abyś mógł używać AOL tylko do synchronizacji i nie musiał trzymać wszystkiego w chmurze (wiadomo, paranoje, szpiedzy, zazdrośni kochankowie i takie tam) ;

No i to tyle z ważniejszych informacji.

17Lut/140

It’s time to get to know Nadesico!

A nie, zaraz, nie ten film. Blablera. Czy ciekawiło Cie kiedyś jak działa blabler i co jest w planach? Ten który wpis odpowie na te pytania.

Blabler jest napisany w języku, którego szczerze nienawidzę, php do tego dorzucone są smarty. Jako baza danych - MariaDB 10.0 a w przyszłości Maria DB Galera Cluster 10 (jak tylko ją wypuszczą). Cluster tak na prawdę w ramach backupu live, wygodna rzecz to będzie. Serwer na którym to stoi, ma CPU AMD Turion NEO II, czyli trudno znaleźć wolniejszy. Ma całe 2GB RAM i jakieś 50Mbit przepustowości łącza, (które jest tak niegwarantowane, że lubi padać), w niej znajdują się dwa dyski 1TB (zasponsorowane przez darczyńców) zestawione w RAID-1 (dla bezpieczeństwa). A gdyby coś strasznego stało się z całą maszyną - jest też druga, znajdująca się w serwerowni OVH, która jest o dziwo wolniejsza niż główny system bo jest na Atomie (ale to dedyk). Ma cały jeden dysk 1TB. Robi za off-site backup, blabler jest backupowany na niej co 6h przyrostowo, pierwszy backup zajął 3 dni. DB backupowana jest obecnie raz na 24h (jest wielka), jak będzie galera to backup będzie na żywo i będzie można zrobić nawet fail-over. A jak datki osiągną odpowiedni poziom to blabler dostanie coś pokroju Core i7 (z 15 razy szybszy niż to co jest obecnie), 2x1TB dysków, 16GB RAM i jakieś 100Mbit pewnego łącza w Niemczech. No. ;>

4Lut/1422

Nowe logo WTW

W zasadzie proste pytanie do publiczności, która grafika powinna wylądować jako logo/ikonka, do wyboru mamy:

 

logoIcon48 Modernistyczne

ic_av_logo4 Pogrzebowe

ic_av Dziwne

logoIcon48[1] Starożytne

 

Glosowanie zamknięte, i patrząc na wyniki... zrobię dogrywkę, ale w innym stylu (o czym oczywiście będzie info). ;)

This poll is closed! Poll activity:
start_date 04/02/2014 18:33:59
end_date 04/02/2014 22:10:10
Poll Results:
Która grafika powinna zostać nowym logiem?
Zakres tematyczny: WTW 22 Komentarze
19Lis/134

Jak mi VS działa na nerwy

A wszystko wydawało się takie proste. Przenieść kod WTW z VS 2008 na VS 2013, ale kompilować to na toolsecie z 2k8 - bo kompatybilność, a poza tym nowe VS ma fajne rzeczy w IDE ale nie w bibliotekach. A przy okazji dodać kod OpenSSL aby się kompilował razem z resztą kodu, bo obecnie muszę trzymać gigantyczne liby w repozytorium z kodem albo bawić się we wcale-nie-banalną kompilację OpenSSL przed kompilacją WTW. W każdym razie wszystko się wydawało proste, VS 2008 jest, VS 2013 jest, import projektów poszedł co prawda z masą ostrzeżeń, ale poszedł poprawnie. Tylko Narzędzi nie VS 2008 nie da się wybrać w 2031 bo 2013 twierdzi, że nie są zainstalowane? Po godzinie poszukiwań okazuje się, że aby używać starych kompilatorów w nowym VS trzeba zainstalować VS 2010, bo MS wymyślił, że zamiast uaktualnić jakoś VS 2008 o kilka XMLi dla ich nowego build-systemu to lepiej będzie jak zainstaluję całe środowisko, którego nie będę potem używał. No ok, do testów mogę zainstalować.

I co? Kompilacja prawie działa, prawie bo nagle build system krzyczy że $(OutFile) nie zgadza się z $(OutDir) czy coś w tym rodzaju, i że może to powodować problemy. Oczywiście, że się nie zgadza, bo wszystkie tymczasowe pliki chcę mieć w innym folderze niż plik wynikowy. I nie powoduje to żadnych problemów. Zabawa w poprawianie tego (bo oczywiści trzeba ręcznie) to "arghhhhhhh". No ale w końcu wszystko działa, dodajemy więc źródła OpenSSL jako projekt VS, co by mogło być kompilowane razem, i co? I biblioteki zależna od OpenSSL wyrzucają nagle przy budowaniu  zylion "unresolved external", po paru godzinach dochodzenia o co chodzi, stwierdziłem, że mam dość i zrobię to samo w VS 2008. Co oczywiście zajmuje czas, bo nie da się projektów VS 2013 zapisać jako projekty VS 2010. I co? I kurde działa bez żadnego problemu, idiotycznych ostrzeżeń i "unresolved externals".

Nie wiem, może tylko mnie to drażni, ale mam wrażenie, że nowy soft raczej utrudnia niż ułatwia życie.

Zakres tematyczny: Uncategorized 4 Komentarze
15Lis/130

Nowości w WTW: DANE/TLSA

RFC 6698 - Jak wiemy (albo nie) aby nie dręczyć użytkowników pytaniami o prawidłowość certyfikatów trzeba albo dodać go do certyfikatów zaufanych albo upolować certyfikat podpisany przez jakąś trzecią firmę, która taki status posiada. Problemy z takim podejściem mogą być takie:

  • Odpłatność za taki certyfikat (chociaż spełniając pewne warunki można taki cert mieć za darmo);
  • W momencie ataku na centrum certyfikacji atakujący mogą sobie wygenerować zaufane certyfikaty z dowolnymi nazwami i tak przechwytywać szyfrowany ruch;
  • Można wygenerować własny certyfikat, z nazwą serwera którego ruch chcemy łapać, co prawda na ogół spowoduje to pokazanie komunikatu ostrzgawczego, ale spójrzmy prawdzie w oczy, większość użytkowników po prostu zaakceptuje to co dostał;

To od czego jest DANE (DNS-Based Authentication of Named Entities)? W sumie do 2 rzeczy. Po pierwsze dzięki DANE zbędne staje się używanie certyfikatów firm trzecich. Można sobie samemu wygenerować certyfikat i ustawić w DNSie jako certyfikat zaufany dla połączenia na danym porcie/protokole. Oraz - jeśli używamy z jakichś powodów zewnętrznego certyfikatu - poinformować klienta, że ten konkretny wydany nam certyfikat jest prawidłowy i że jeśli w połączeniu TLS znajdzie się jakiś inny - jest to niebezpieczne.

DANE (szczególnie z DNS-SEC) podnosi bezpieczeństwo połączeń TLS, zakładając że serwer ma wpisy DANE w DNS i klient obsługuje ten właśnie RFC. A WTW jest (chyba) pierwszym klientem, który ten protokół implementuje.

26Maj/130

Hołda Race 2013 – Chorzów

Zdjęcia z nowego najwyraźniej cyklu zawodów MTB przeprowadzanych w WPKiW (Park Śląski) w Chorzowie. Niestety nie mogłem zostać do końca, ścigał mnie pociąg. ;P Wersja Facebookowa (dla chących się potagować czy coś) -> tutaj;

Zakres tematyczny: Uncategorized Czytaj dalej
5Maj/130

Modele Redukcyjne 2013

Zawody modeli redukcyjnych, pływających, w okolicy Lasku Panewnickiego. Niestety prawie zawody bo z braku informacji udało się obfocić tylko końcówkę. ;(

Zakres tematyczny: Relacje, Zdjęcia Czytaj dalej
10Kwi/1314

AndroidLink i WTW

Kaw jak wiadomo, jest człowiekiem leniwym, i co za tym idzie - lubi ułatwiać sobie życie. A że mój telefon na ogół jest wyciszony całkowicie (a co mi będzie przeszkadzał), często zdarzało się przegapić, że przyszła jakaś wiadomość. Poza tym, odpisywanie na wiadomości na dowolnym telefonie, który nie jest BlackBerry jest dość tak, mało wygodne. I tak powstał smsBlue. To antyczne czasy, kiedy telefony miały coś takiego jak modem. Modemy te mają możliwość wykorzystania komend AT do wysyłania/odbierania wiadomości SMS. A dlaczego Blue? Bo działało to oryginalnie po bluetooth, a potem także po IrDA (podczerwień) i standardowych portach COM. Niestety smartfony nie są na tyle smart aby taki modem udostępniać. Ale na smartfonach można instalować aplikacje, i tak powstał AndroidLink.

I tak powstał AndroidLink, czyli coś co po podłączeniu do komunikatora (WTW) i Androidowego telefonu informuje nas o przychodzących:

  • Wiadomościach SMS;
  • Wiadomościach MMS (tekst i grafika);
  • Rozmowach telefonicznych;
  • Raportach dostarczenia wiadomości SMS;

Do tego wysyłanie wiadomości SMS do wielu odbiorców na raz (można spamować na święta znajomych), oraz:

  • Synchronizację schowka urządzeń (tylko tekst). Co jest prostą metodą na nieprzepisywanie tekstu z telefonu, wystarczy skopiować co chcemy do schowka, i magicznie mamy to na kompie (i w drugą stronę);
  • Informację o tym co telefon robi, stan sygnału, poziomu baterii i ile miejsca nam zostało;

Działa to po socketach sieciowych, a więc albo po WiFi albo po Bluetooth. Preferowany jest bluetooth bo w przeciwieństwie do WiFi nie drenuje baterii jak diabeł, nie ma dużego zasięgu i z zasady jest zabezpieczony i zaszyfrowany. Ale jak ktoś stale i tak używa WiFi to czemu by nie? Połączenie może być zabezpieczone hasłem, jednak sam transport danych nie jest (na razie) niczym zabezpieczony, dlatego lepiej nie używać tego poza siecią lokalną, jednak jak ktoś się uprze może swój telefon monitorować nawet przez sieć 3G.

AndroidLink na Androida dostępny jest w Google Play, a jak ktoś ma awersję do tego sklepu może sobie alternatywnie pobrać apk tutaj. Do kompletu potrzebujemy także wtyczki do komunikatora. (na 2013-04-10 najlepiej by było jeśli i komunikator i wtyczka będa pochodziły z minefielda) Jeśli komputer i telefon są sparowane po BT, wystarczy we wtyczce z listy wybrać "bluetooth" oraz odpowiednie urządzenie. W wypadku internetu mamy dwie opcje, pierwsza to ręczne wpisanie IP telefonu w opcje, ale musimy znać IP. Aplikacja na telefonie podaje co prawda jakie adresy IP urządzenie ma, jednak czasem ciężko zgadnąć, który nadaje się najbardziej:

2013-04-10 11.40.18

Ale nie trwóżmy się, mamy drugą opcję. Wystarczy sobie tapnąć druga opcję w sekcji "Access" -> "Widoczność urządzenia" i będziemy mieli około 2 minut na skorzystanie z automatycznego wykrywania telefonu w opcjach Linka na PC. (zakładając, że są w tej samej sieci). ;)

Jeśli poprawnie wszystko ustawiliśmy, i nie wyłączyliśmy informacji o połączeniu/rozłączeniu telefonu to w głównym oknie WTW powinniśmy móc przełączyć się na tę zakładkę:

_wtw_00227_wtw_00251.

W momencie przychodzącego SMS/MMSa dostajemy o tym informację za pomocą standardowego powiadomienia + jeśli chcemy może być ona umieszczona także na karcie ze zdarzeniami telefonicznymi, i wygląda to wtedy tak:

_wtw_00250.

W wypadku SMSów obsługiwany jest tylko tekst. W wypadku MMSów obsługiwane są też załączniki, acz inne niż grafika wyświetlane są w postaci linka. Jednakże MMSy stanowią pewien problem. API Androida nie ma żadnego SDK do obsługi MMSów, więc ich wykrywanie/pobieranie zrobione jest dość niestandardową metodą. Wtyczka ręcznie parsuje SMIL, i nie implementuje tego standardu całkowicie, więc o ile w większości wypadków wszystko powinno być ok, to czasem, jeśli nadawca ma jakiś nietypowo składający SMIL telefon, mogą wystąpić jakieś nieścisłości względem tego jak wiadomość pokazuje nam telefon.

W związku z brakiem odpowiedniego API, jedyne co możemy wysłać to SMSy, to za pomocą wbudowanych w WTW mechanizmów wysyłki, więc nie powinno sprawiać problemów. Wszystkie potrzebne rzeczy ustawiają się w tym względzie same, jedyne co musimy wpisać to numer telefonu, treść i jeśli mamy jakieś inne bramki niż AndroidLink ustawione - wybrać transport. Obie części aplikacji posiadają AutoUpdate (wersja na Androida tylko przez Google Play), wersja na PC aktualizuje się do wersji "nie-nightly";

9Kwi/135

How to block Google Play Services, permamently

Why? Because I'm paranoid, and I don't like when google installs something without my explicit permission. On top of that, Google Play Services keep getting back, even if I uninstall it. And I know, YouTube app want's it, but I don't use YouTube. Besides with Google Play Services installed, "Android OS" eats a lot of battery and my phone works on it two days instead of three. So:

  • Uninstall Google Play Services
    • Go to Settings -> Apps -> All
    • Remove what's unwanted
  • Enable installation of non-market apps;
  • Install Google Play Services Blocker
    • This is dummy package;
    • There is no code in it, but:
    • It has the same id as Google Play Services, version code is set to 90 million and signature differs from google's so:
    • Android OS security system won't allow installation of original GPS until GPSB is installed;

And problem solved, at lest for now. Oh, this may only work for rooted phones.

Zakres tematyczny: Uncategorized 5 Komentarze