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?
bart's blog
Strony
sobota, 18 sierpnia 2012
czwartek, 16 sierpnia 2012
Jak szybko przetestować prosty WebService? (SOAP 1.1 i cURL)
Dziś krótko, ale na temat. Załóżmy, że:
Zamierzasz skrupulatnie przetestować swoje dzieło. Chcesz:
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:
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.
- 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)
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ą:
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
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):
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?
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". :)
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". :)
Subskrybuj:
Posty (Atom)