Strony

sobota, 18 sierpnia 2012

Rekursywny grep na ubogich systemach ;-)

Często korzystasz z grep -R? Trafiłeś na system, który nie udostępnia tego przełącznika (np. systemy korzystające z busybox'a)?

Nie musisz pisać swojego skryptu do rekursywnego odwiedzania katalogów w FS. Wystarczy wbudowany find i nasz zubożony grep. ;-)
Jeśli Twój system nie dysponuje także poleceniem xargs, wykorzystaj przełącznik exec zaimplementowany w find:
W miejsce {} wstawiana jest nazwa znalezionego przez find pliku, polecenie zaś należy zakończyć średnikiem poprzedzonym backslash'em (aby zapewnić, że bash nie zinterpretuje tego jako separatora poleceń).

Przy okazji: natknąłem się ostatnio na narzędzie ack, które ponoć sprawuje się lepiej niż grep. Korzystacie?

czwartek, 16 sierpnia 2012

Jak szybko przetestować prosty WebService? (SOAP 1.1 i cURL)

Dziś krótko, ale na temat. Załóżmy, że:
  • zaimplementowałeś prosty WebService,
  • WS działa w oparciu o protokół SOAP. 

Zamierzasz skrupulatnie przetestować swoje dzieło. Chcesz:
  • aby testowanie odbywało się w relatywnie prosty sposób,
  • pozwalało dodatkowo wykonać load-testing, 
  • nie wymagało napisania linijki kodu,
  • było możliwe do uruchomienia w prostym, standardowym środowisku.

Jest na to prosty sposób.

Korzystając z narzędzia cURL i spreparowanych wcześniej wiadomości zgodnych z SOAP, jesteś w stanie testować WS z poziomu konsoli (Linux lub cygwin). Aby to zrobić, należy wykonać następujące polecenie:
Gdzie:
  • http://ws-targeturl.com/ws/ to adres docelowy WS,
  • --user user:password (opcjonalne) przesyła do serwera nazwę użytkownika i hasło (tylko dla HTTP Basic)
We wskazanym pliku soap_example.xml musi znaleźć się docelowa zawartość komunikatu SOAP wysyłanego do WebService'u, przykład poniżej:
Tak przygotowany test można wykonać zarówno na jednej jak i wielu maszynach wielokrotnie (w tym także równolegle), co może nieźle pozwolić ocenić czas odpowiedzi serwera poprzez symulację obciążenia.

wtorek, 1 listopada 2011

Ubuntu 11.10 + karta bezprzewodowa 1030N = skuteczny sposób na zawieszenie routera (sic!)?

Tak, to prawda.

Czegoś takiego jeszcze nie widziałem. Ubuntu 11.10 pracujące na laptopie DELL'a z kartą bezprzewodową Intel Centrino N1030 skutecznie zawiesza u mnie router. Wystarczy kilka pakietów przesłanych w eter i router kompletnie odmawia posłuszeństwa, stając się niedostępnym nie tylko dla tej karty, ale dla wszystkich urządzeń sieciowych (w tym przewodowych).

Znalazłem sporo postów dotyczących problemów z tą kartą, zdecydowana większość z nich mówi o konieczności zrezygnowania z trybu N w routerze na rzecz B/G mixed i wymuszeniu takiego trybu po stronie klienta (Ubuntu).

Niemniej jednak, nie rozwiązywały one problemu podstawowego - padającej sieci. Dlatego przeszedłem do samodzielnych poszukiwań.

Jak się okazuje, problem leży w sterowniku dla karty 1030N, o nazwie iwlagn. Na podstawie komunikatów w dmesg, udało mi się ustalić, że problem leży w agregacji niektórych ramek (ang. subframes aggregation). Sterownik zawarty w kernelu 3.0.0-12, który leży u podstaw Ubuntu 11.10 ma w sobie buga związanego z tym tematem, a patch poprawiający ten bug można znaleźć tutaj.

Rozwiązanie?
W moim przypadku pomogła instalacja kernela 3.1-RC z Mainline Builds.

Krok po kroku, wygląda to następująco:

1. Ściągnij paczki z kernelem z http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.1-rc10-oneiric/, zgodnej z architekturą Twojego PC, do jednego katalogu na dysku.

2. Zainstaluj ściągnięte oprogramowanie za pomocą:
dpkg -i *.deb

3. Zrestartuj maszynę, korzystając z nowo zainstalowanego kernela.

Dzięki temu, moja karta N1030 działa teraz świetnie i to z wykorzystaniem trybu N!

Powodzenia.

Więcej informacji (źródła, które pomogły mi w rozwiązaniu problemu):
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/821034
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/821157
http://superuser.com/questions/340751/dell-laptop-wireless-linux-drivers-xps-l502x
https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/836250

sobota, 4 czerwca 2011

Medical Locator - jak szybko znaleźć placówki medyczne?

W ramach projektu na jeden z przedmiotów na uczelni, realizowałem projekt o wdzięcznie brzmiącej nazwie: Medical Locator. Postaram się w tym poście przybliżyć pokrótce, do czego ta aplikacja może się przydać.

Medical Locator jest darmową aplikacją stworzoną na platformę Android (1.6+), która umożliwia wyszukiwanie oraz przeglądanie placówek medycznych. Oparta jest o bazę danych zawierającą obecnie ok. 18.000 rekordów (tylko Polska). Głównym elementem aplikacji jest mapa (Google Maps) - to na niej pokazują się placówki znajdujące się w pobliżu wybranego punktu. W myśl zasady "Jeden obraz wart jest tysiąca słów", pokażę jak to wygląda:


Tak, te wszystkie "baloniki" (zwane markerami) oznaczają pojedynczą placówkę medyczną. Po dotknięciu dowolnego takiego "balonika" wyświetlają nam się szczegóły dot. konkretnej placówki.



Z poziomu takiego widoku, możemy wykonać kilka podstawowych zadań związanych z takim obiektem (w zależności od danych, jakie zostały udostępnione). Te zadania są symbolizowane przez 4 ikonki będące przyciskami - dokładnie te, które widać na obrazkach powyżej.

Oto, co one oznaczają (w kolejności od lewej do prawej):
  • Telefon - zadzwoń do wybranej placówki
  • Poczta elektroniczna - napisz e-maila
  • Kula ziemska - przejdź do strony internetowej
  • Mapka - znajdź drogę do danej placówki

Niektóre ikonki mogą być "wyszarzałe" w ramach danego obiektu (jak na powyższych przykładach, ikonka poczty elektronicznej). Wynika to z tego, że nie zawsze placówka udostępnia odpowiednie dane, które umożliwiłby wykonanie danej akcji. Stąd aktywne są tylko te przyciski, dla których aplikacja posiada odpowiednie dane.

Specyficznym przypadkiem jest ikonka mapy - aby była ona aktywna, potrzebna jest możliwość określenia lokalizacji użytkownika telefonu (z dowolnego źródła: zarówno na podstawie wieży komórkowej, do której ostatnio zarejestrował się telefon lub GPSa).

Co jeszcze umożliwia aplikacja?

  • Filtrowanie wyników na mapie


    Markery, które pokazują się na mapie są ograniczone według wskazanych tutaj kryteriów. Może to być:
    • odległość, w jakiej mają się znajdować placówki
    • rodzaj placówki (wg wybranych kryteriów)

    • Wyszukiwanie konkretnych placówek na podstawie słów kluczowych (dodatkowo, możliwość wyszukiwania głosowego)


      Po wyszukaniu wg wskazanych słów kluczowych, użytkownikowi ukazuje się lista z obiektami spełniającymi kryteria. Każdy element można dotknąć i zobaczyć jego szczegóły.

    That's all folks!

    A teraz najważniejsze: jak wypróbować tę aplikację na swoim telefonie? Bardzo prosto. Po prostu ściągnij ją z Android Market, korzystając z poniższego QRcode. Za darmo!
     


    Aplikacja na stronach Android Market: kliknij tutaj.

    P.S. Pamiętajcie, że ta aplikacja jest w fazie beta-testów. Wszelkie sugestie, co do samej aplikacji - bardzo mile widziane. Jeśli aplikacja nie działa u Ciebie tak, jak powinna - również skontaktuj się ze mną, postaramy się na coś na to poradzić.

    P.S.2 Niestety, muszę także zaznaczyć, że ta aplikacja była i jest rozwijana tylko w ramach mojego wolnego czasu. W związku z tym, nie mogę obiecać, że wszelkie modyfikację będą "natychmiastowe". :)