• Java dla programistów PHP: array_unique

    W PHP jest przydatna funkcja array_unique usuwająca duplikaty z tablicy asocjacyjnej i zwracająca tablicę bez powtórzeń. W Java, typ ArrayList nie ma domyślnie zaimplementowanego swojego odpowiednika. Trzeba sobie radzić. Na przykład tak:

    @SuppressWarnings({ "rawtypes", "unchecked" })
    final public static void removeDuplicates(ArrayList list) {
      HashSet set = new HashSet(list);
      list.clear();
      list.addAll(set);
    }
  • Baja Poland 2012

    Było dużo kurzu i ryku silników. Miła odmiana. Przy okazji muszę zapamiętać, że Punto nie jest samochodem terenowym i nie warto pakować się w polne drogi za SUVami i prawdziwymi terenówkami. Przejechałem, ale kilka razy myślałem, że zawisną na koleinie. Nie, Punto zdecydowanie nie jest terenówką. Za to córce się podobało.

    [gallery columns="2"]

  • Java dla programistów PHP: foreach

    Java nie posiada instrukcji foreach, trzeba więc radzić sobie inaczej. Odpowiednikiem

    $aArray = array("Ala","ma","kota");
    
    foreach ($aArray as $element) {
    	echo $element."<br />";
    }

    będzie, mniej więcej, coś takiego

    String[] array = {"Ala","ma","kota"};
    
    for (Object element:array) {
    	System.out.println(element.toString());
    }

    lub takiego

    ArrayList array = new ArrayList();
    
    array.add("Ala");
    array.add("ma");
    array.add("kota");
    
    for (Object element:array) {
    	System.out.println(element.toString());
    }

    Mniej więcej, gdyż w Java nie ma tablic asocjacyjnych. Dość blisko jest HashMap ale to nie to samo i ma swoje ograniczenia.

  • JavaScript może rozśmieszyć do łez

    W wolnej chwili polecam to wideo:

    Dowodzi ono niezbicie, że JavaScript nie jest normalnym językiem programowania :)

  • Łańcuch: Nie znasz dnia ani godziny

    Od ponad roku tradycją niedzielnego przedpołudnia jest wyprawa rowerowa z Grzegorzem w okolicach Szczecina. Raz bliżej, raz dalej. Częściej szosa niż teren, lecz czasami w Puszczę Wkrzańską też wjeżdzamy. Nie inaczej miało być i tym razem: lajtowa wyprawa lasem z Głębokiego do Polic. Większość trasy szlakami (czarnym i żółtym), czasami tak jak wiedzie dukt, czyli na free ride na luzie. I było na luzie aż do 16 kilometra, kiedy Grzegorzowi strzelił łańcuch.

    Po prostu się rozkuł i tyle go widzieli.

    Szczęściem w nieszczęściu było to, że Grzegorz miał skuwacz łańcucha. Bez tego czekał by go ładny spacer do domu. Aby nie było zbyt lekko, skuwacz Grzegorza jest jakiś dziwny. Trzeba solidnie się wysilić aby wybić sworzeń. O ponownym skuciu już nie będę wspominał. Aby było śmieszniej, Grześ zapomniał zostawić sworzeń w ogniwie i zamiast o 2, łańcuch musiał być skrócony o 4 ogniwa.

     

     

    Po trzech kwadransach walki mogliśmy ruszyć dalej. Tylko jakoś ochota na dalszą jazdę przełajową nam opadła i zdecydowaliśmy się na odwrót. Szczyty Puszczy Wkrzańskiej podbijemy następnym razem.

    A ja, po tej małej wyprawie w dość lekkim mimo wszystko terenie stwierdzam z całą stanowczością, że w obecnej konfiguracji mój rower XC MTB stracił umiejętność jazdy w terenie. Głównym problemem okazał się brak przyczepności opon 26x1.7 z bieżnikiem szosowym na podjazdach. Co chwila uślizg i trzeba się bardzo napracować aby podjechać pod ostrzejszą górkę. Nie wiele lepiej opony spisywały się w piasku. No ale cóż można oczekiwać od opon na asfalt i szuter?

    Muszę też popracować nad awaryjnym wypinaniem SPD, gdyż zaliczyłem dziś przez nie jedną wywrotkę w liście. Co prawda nogę wypiąłem, lecz nie tą co trzeba i gleba zaliczona.

  • Ostatni dzień urlopu

    Ostatni dzień urlopu postanowiłem spędzić produktywnie i zbudowałem stolik pod router. Kawałek deski, dwa kawałki listewek, klej i 4 wkręty. Wszystko po to, aby router nie stał na podłodze. Przesadziłem?

     

  • CyanogenMod dla LG P970, jeszcze nie teraz

    Trochę dalej jak miesiąc temu, z lekkim kawałkiem, zachwalałem CyanogenMod 7.2 dla LG P970 Optimus Black. Fakt, jest szybszy i standardowego ROMu i zajmuje mniej RAM, lecz to wszystko jest okupione dwoma poważnymi wadami.

    Po pierwsze, czas pracy na baterii spadł i to poważnie. Już po tygodniu do zainstalowania Cyanogena uzmysłowiłem sobie, że po 10 godzinach, baterii zostaje jakieś 30%. Choć telefon wcale nie jest mocniej eksploatowany niż wcześniej. Niby nic, gdyż i tak telefon ładuję codziennie, lecz zaletą tego zdecydowanie nazwać nie można. Druga wada jest dużo poważniejsza: stabilność. Smartfon zaczął się wieszać. Niezbyt regularnie, lecz co 2-3 dni, tracił wszelką responsywność przy włączonym ekranie. Pomagało jedynie wyjęcie baterii. Kilka razy się sam zrestartował i miał problemy z obsługą GPS. Odbiornik potrafił ni z tego, ni z owego wyłączyć, choć aplikacje (Endomondo) z niego korzystały.

    Tak więc, CyanogenMod 7.2 został wczoraj odinstalowany i wróciłem do starego, dobrego ROMu V20o z którym nie miałem większych problemów przez 3 miesiące.

  • Kolory nieba

  • MySQL: pobranie rekordów których wartość występuję więcej niż jeden raz

    Dziś z serii "MySQL w gotowych rozwiązaniach": jak pobrać z bazy danych rekordy, w których określona wartość pola występuje więcej niż jeden raz? Należy wykorzystać grupowanie i agregację, czyli użyć klauzuli HAVING i GROUP BY. Może to wyglądać następująco:

    SELECT *,COUNT(*) FROM tabela GROUP BY Pole HAVING COUNT(*)>1

  • Wynik polowania na Perseidy

    Niestety, z mojego dzisiejszego polowania na Perseidy płyną następujące wnioski:

    1. mieszkam za blisko miasta;
    2. było trochę chmur;
    3. nie mam obiektywu o dość dużej jasności i szerokim kącie
    4. aparat mi szumi;
    5. nie chciało mi się pojechać gdzieś dalej;

    Coś tam jednak udało się złapać. Na 120 wykonanych zdjęć, 19 zawiera ślady przejścia, w tym niektóre po dwa lub więcej meteoryty. Z ciekawszych ujęć: