Monday, October 19, 2015

MiBand from xiaomi not charging

Today I have experienced (and solved) charging issues with my xiaomi MiBand.
Background: original MiBand was charging just fine previously. I have 2 of them where one has stock firmware. I am using the other one.
When connected, MiBand was not showing any signs of connection. From time to time it was showing 3 dots for a moment (last one was blinking). About 1-2 seconds later it looked  if it was dead.
Solution: clean the MiBand, try connecting once more. If it is still not working then hit it gently - it should start vibrating.

Tuesday, October 6, 2015

Eh, uh... maven

No i stanęło siem. Po kilku ładnych latach przerwy jestem znowu w projekcie JAVA'owym.
Czyję się obco, ponieważ:
  • Pracuję z kolegami, którzy mają duuuużo więcej doświadczenia niż ja. Ale to jest fajne ponieważ mogę się uczyć od nich i brać dobry przykład z innych.
  • Jestem tu nowy. Ostatnio pracowałem komercyjnie pełną gębą z JAVA w czasach JAVA 1.3. Od tej ery minęło już sporo czasu. JAVA 1.4. 1.5. 1.6. 1.7. Każde to inna era w świecie JAVA. W zasadzie muszę się wszystkiego uczyć od nowa.
  • Dotychczas pracowałem z dużymi bazami danych (głównie data warehouse). I programowaniem raczej strukturalnym niż obiektowym. Przetwarzaniem grupowym a nie pracą na pojedynczych obiektach. Te przeskok na zupełnie inny tor.
  • Nie chcę obciążać kolegów (a i tak to częściowo robię) przez pomoc/edukacje dla mnie. W projekcie jest zapi**** i nie mają czasu aby mnie wdrażać.
  • Wskoczyłem do już toczącego się projektu, który miał trwać łącznie ~6 tygodni.
Jedną z (wielu) nowości jest dla mnie maven. Spróbuję w krótce (i pewnie nierzetelnie) opisać moje spostrzeżenia na temat tego "cosia".

Maven to taki sposób opisywania/budowania/uruchamiania/... projektów.
Składa się z wielu plików .pom opisujących jak pracować z projektami. A każdy projekt jest inny i korzysta z setek (tysięcy) innych projektów.
Aby to wszystko współdziałało opisujemy projekty, ich wersje i zależności od innych projektów (w wersjach). Maven sam tym odpowiednio zarządza. Aby ściągnąć takie "projekty" musimy mieć otwarty dostęp do internetu (mało bezpieczne) lub też wystawione wybrane repozytoria dla nas (np. na jakimś serwerze działającym jako specyficzne proxy...).
Maven nie wymaga skomplikowanej instalacji. Rozpakować i tyle.
Konfiguracja jednak się przydaje:
  • Zazwyczaj instalujemy JDK. I ustawiamy zmienne środowiskowe: JAVA_HOME oraz dopisujemy ${JAVA_HOME}/bin do $PATH.
  • Możemy ustawić zmienną M2_HOME - tam maven ściąga masę plików (i trzyma konfigurację naszego "komputera").
  • Maven'a z założenia uruchamiamy gdziekolwiek i powinien zawsze działać tak samo lub podobnie. Nie podajemy parametrów - on nie jest od tego. Zazwyczaj odpalamy "mvn clean install" lub coś podobnego. "clean" i "install" to profile, które chcemy włączyć.
  • Ale ja jednak chcę mieć konfigurację inną niż koledzy - oni nie lubią kolorków, czytelności, vim'a i innych (w przeciwieństwie do mnie). Tutaj mam 2 możliwości: zmienne mavena'a (maven properties) i/lub profile maven'a. W skrócie: mogę stworzyć własne profile nie będące częścią projektu. Profile mogą być zawsze aktywne. I mogą zmienić/przesłonić dowolną inną rzecz w projekcie.
Praca z mavenem jest jak dla mnie ciężka. Każdy projekt jest inny. Maven wymaga aby zdefiniować od czego zależy nasz projekt i w jakiej wersji jest zależność. W moim rozumieniu (definicja się różni) dany projekt zależy od innych projektów (zdefiniowanych przez parę grupa+artefakt które identyfikują jakiś projekt) oraz wersji danego projektu (można je określać dośc elastycznie).
Zazwyczaj nasz projekt zależy od wielu projektów. A te od innych projektów. A co jeśli te projekty zależą od jednego tego samego projektu ale w różnych wersjach? I tu się przydaje to, że projekt definiujemy przez parę grupa+artefakt.

Mam nadzieję, że dobrze to rozumiem... jak do czegoś sensownego dojdę to zmienę ten wpis... może błędy poprawię?