Kitek's Page Blog programisty / webdeveloper'a

Crashlytics

Crashlytics to pozycja obowiązkowa każdego developera aplikacji mobilnych. Główną funkcjonalnością pakietu jest logowanie i raportowanie błędów (crashy, exceptionów) w naszej aplikacji. Najprościej mówiąc jest to taki Google Analitycs zbierający informacje o wszelkich nie obsłużonych wyjątkach aplikacji. Raporty o nowych błędach dostępne są przez intefejs web, za pomocą pluginu do Eclipse’a lub mogą przychodzić na naszego maila.

Crashlytics dashboard - przykładowy raport o błędach.

Dodatkową funkcjonalnością pakietu jest możliwość tworzenia grup testerów i dystrybuowania wersji “beta” naszego programu. Crashlytics jest darmowy (wymaga odczekania pewnego czasu na otrzymanie zaproszenia) i dostępny na platformy iOS i Android.

Android - własne czcionki

W przypadkach gdy nadworny grafik wymyśli sobie fantazyjne napisy na wizualizacji aplikacji lub domyślny systemowy font nam się znudził możemy wgrać własną czcionkę i trochę poszaleć. Poniżej przedstawiam prosty sposób na zastosowanie dowolnych czcionek z TextView.

  1. Nasze fonty umieszczamy w katalogu assets/fonts (jeżeli nie mamy takiego tworzymy go)
  2. Na wybranym TextView ustawiamy Typeface z naszą czcionką:
Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/GloriaHallelujah.ttf");
		
TextView tx1 = (TextView) findViewById(R.id.tx1);
tx1.setTypeface(tf);

Czcionki możemy ściągnąć ze strony Google Fonts.

Android TextView - Przykład zastosowania różnych fontów Przykład zastosowania różnych czcionek

Redis - ograniczone kolekcje

Pracując nad aplikacją wykorzystującą Redis’a potrzebowałem prostego mechanizmu umożliwiającego przechowywanie kilkuset ostatnich logów. Istotne było ograniczenie maksymalnej ich liczby, a także zapewnienie odpowiedniej rotacji. Dzięki zastosowaniu list i poleceń: lpush i ltrim możliwe jest stworzenie ograniczonej kolekcji.

var rc = redis.createClient("host", "port"),
    cacheName = "my-logs",
    maxLogSize = 100,
    logData = {"key":"value"};

rc.lpush(cacheName, JSON.stringify(logData));
rc.ltrim(cacheName, 0, maxLogSize);