4 kwietnia 2014

Wyszukiwarki inne niż google.com - tak istnieją metawyszukiwarki

Zgodnie z definicją wyszukiwarka internetowa (ang. search engine) to program lub aplikacja internetowa, która realizuje fukncję podążania za hiperłączami (linkami) internteowymi w celu zbudowania indeksu z danymi. Oczywiście sukces, jaki niewątpliwie osiągnęło Google w swojej globalnej wyszukiwarce internetowej dla zasobów HTTP / WWW to szybki czas i wysoka trafność odpowiedzi na zapytania o szukane frazy. Globalny zasięg (oprócz Chin i jednej z Korei oczywiście) spowodował, że Google dzięki wyszukiwarce internetowej podbiło świat wirtualny internetu i ma monopol.


W dobie takiego monopolu czasami spotykamy się z niewiarygodnymi rezultatami wyszukiwania lub po prostu spamem internetowym zamiast np: artykułu naukowego na temat. Na ratunek przychcodzą nam metawyszukiwarki, czyli wyszukiwarki dziedzinowe, w których zawężamy się do szukania wyłącznie tematów i zagadnień z danej dziedziny.
 
Metawyszukiwarki są też często kojarzone z multiwyszukiwarkami, które przeszukują wiele serwisów i zwracają w jeden spójny sposób agregaty danych bądź też najcenniejsze z nich, które wynikają np: z rankingu popularności ew. kryterium jakim jest zawężenie do dziedziny multiwyszukiwarki.
 


Warto nadmienić, że metawyszukiwarka nie musi bazować na linkujących do siebie stronach WWW. Może używać dedykowanego parametru lub dziedzinowego kryterium, po którym wyniki wyszukiwania będą najbardziej trafne. Np: szukanie aminokwasów nie zawsze udaje się w Google, ale metawyszukiwarka od aminokwasów robi to idealnie i sprawniej. Ba możemy do niej wprowadzić wzór lub obrazek aminokwasu, którego szukamy i jest to najlepszy sposób dziedzinowy.
Istotna różnica metawyszukiwarekk i multiwyszukiwarekk w stosunku do zwykłych wyszukiwarek internetowych ogólnego przeznaczenia jest taka, że meta i multi mogą nie utrzymywać swojego indeksu wiedzy. Jedynie robią rankingowanie lub stosują inne eksperckie algorytmy podpowiadania nejlepszych wyników.

Odnośnie szukania konkretów w sieci. Tak działa na codzień przeciętny użytkownik, nie szuka zawsze wszystkiego i w każdym wymiarze. Jest jeden szczególny klient, który szyka byćmoże wszystkiego i wszędzie - zdecydowanie, agencje wywiadowcze. Używają sobie tylko znanych metawyszukiwarek, które w dziedzinie śledczej lub wywiadowczej robią swoją najlepszą robotę. Dokładnie nakierowują na: cele, ludzi, firmy, zzdarzenia, fakty, skojarzenia ludzi i urządzeń, itd.
Postaram się omówić kilka metawyszukiwarek jakie spotkałem na WWW i zachęcam do eksperymentowania z wyszukiwaniem, bo jest to ważne, aby wiedzieć gdzie oprucz Google.com znajdą się stosowne informacje w internecie.


Świat metawyszukiwarek ciągle się zmienia. Jedne istnieją w sieci, ale nie rozwijane odstraszają datą ostatniej aktualizacji. Inne zmieniają nazwy i adresy. Część zupełnie znikaja i powoli się o nich zapomina. Metawyszukiwarki nigdy nie zdobyły dużej popularności. Może trudno im wygrać konkurencyjną walkę z gigantem, ale mimo tego mają wiernych fanów, a w sieci regularnie pojawiają się nowe projekty z tej grupy.



Dzisiaj punkt ciężkości przesuwa się raczej w stronę metawyszukiwarek tematycznych, zwanych potocznie „porównywarkami” – te umożliwiają wyszukanie i porównanie wielu ofert różnych sprzedawców internetowych. To serwisy typu ceneo.pl czy skapiec.pl, ostatnio popularne są „travel metasearch engines”, które pomogą zarezerwować np. lot czy pokój w hotelu.

Lista poniżej to typowe metawyszukiwarki, dzięki którym w jednym oknie widzimy wyniki z kilku innych wyszukiwarek. Są głównie anglojęzyczne i to ten obszar językowy jest przede wszystkim przeszukiwany. Poza jednym wyjątkiem nie ma takiej, która byłaby dedykowana specjalnie zasobom polskojęzycznym.

Dogpile

Łączy wyniki Google, Yahoo!, Yandex i kilku innych wyszukiwarek, zwłaszcza tych dedykowanych plikom video i audio. Umożliwia wyszukiwanie w całej sieci oraz w obrazach, materiałach video, newsach. Oferuje wyszukiwanie informacji lokalnych oraz osób , szkoda że tylko na terenie USA. Daje możliwość wyszukiwania zaawansowanego: z wszystkimi słowami, dokładnej frazy, wykluczenia słowa bądź frazy, oraz wyeliminowania bądź zawężenia do konkretnej domeny. Można także ograniczyć wyniki do jednego z 10 języków (polskiego niestety nie ma).Działa dość długo, bo od 1996 r. Ciekawostką jest nazwa wyszukiwarki, zaczerpnięta z gry rugby, gdzie gracze tworzą stos nakładając się jeden na drugiego. Dogpile – jak zapewniają twórcy – robi dokładnie to samo, układa wszystkie dostępne wyniki w jednym miejscu.

Yippy

Twórcy kładą nacisk na dwa elementy ważne według nich dla współczesnego internauty. Po pierwsze Yippy ma być przyjazna rodzinie. Eliminowane są treści takie jak pornografia, gry, treści seksualne oraz produkty czy poglądy, które mogłyby być uznane za antysemickie, antychrześcijańskie, konserwatywne i antyamerykańskie. Po drugie chroni prywatność użytkowników (żadne metadane nie są przechowywane, tak jak i historia wyszukiwania). Oferuje ciekawe rozwiązanie – zamiast dostarczania milionów wyników w postaci jednej długiej listy, grupuje podobne wyniki razem w “chmury”: dziedzinową (tematyczną), źródłową (pokazuje liczbę wyników z konkretnego adresu), wg. domeny i czasu, kiedy się informacja w sieci pojawiła. Możliwe jest wyszukiwanie w całej sieci, zdjęciach, blogach bądź wikipedii. Ciekawe są projekty specjalne, np. wyszukiwarka dedykowana dziełom Szekspira http://shakespeare.yippy.com czy działalności Benjamina Franklina http://ben.yippy.com.

Ixquick

Jedyna multiwyszukiwarka posiadająca także interfejs polski. Jest dostępna także w innych językach m.in.: chińskim, angielskim, francuskim, niemieckim, japońskim, portugalskim, hiszpańskim, szweckim, a nawet tureckim czy koreańskim. Łącznie wyszukuje w 18 językach. Każda wersja językowa uwzględnia w wyszukiwaniu lokalne wyszukiwarki (o ile istnieją). przyznaje każdej stronie jedną gwiazdkę za każdą wyszukiwarkę, która umieściła ją w pierwszej dziesiątce swoich wyników. Pięć gwiazdek oznacza, że pięć wyszukiwarek oceniło stronę tak samo. Ixquick nie gromadzi ani nie udostępnia żadnych informacji osobistych. Mechanizm Oferuje szerokie możliwości spersonalizowania ustawień wyszukiwania.

3 marca 2014

Clojure - język funkcyjny osadzony na JVM

CLOJURE wg. wiki. jest to nowoczesny dialekt języka programowania Lisp, ogólnego przeznaczenia, który wspiera modyfikację uruchomionego programu i zachęca do programowania funkcyjnego oraz współbieżnego.

Tak się składa, że zawitałem ostatnio na warsztaty programowania w języku Clojure zorganizowane w Poznaniu i z niesamowitą lekkością ;-) w ciągu kilku pierwszych godzin testowałem sam język i jego możliwości, po czym kodowałem projekt prostej gry w Clojure oraz Clojure Script. Poniżej zechciałem dla siebie i innych sporządzić notatki z warsztatu n.t. Clojure.

Clojure cechy ogólne

  • kompilowany do bajtkodu JVM (Java Virtual Machine)
  • w pełni zgodny z językiem Java - można wykorzystywać klasy (bytekod) z Java w Clojure
  • domknięcia z naciskiem na rekurencję
  • Bogata biblioteka stałych struktur danych
  • repozytorium pakietów wraz z czymś takim jak szablony użycia, gotowe prototypy zapewniające szybsze pisanie kodu i przede wszystkim poznanie modułu
  • bogata biblioteka stałych struktur danych
  • Silne wsparcie dla współbieżności w postaci transakcyjnej pamięci (ang. Software Transactional Memory – STM) i systemu agentów
  • makra służące do definiowania funkcji jak w języku Scheme

Clojure jest dynamicznym językiem programowania

Wiem, że jest to zbyt ogólne pojęcie i już wyjaśniam. W Clojure ponad interpretację i kompilowanie kodu została wyniesiona idea odkrywania, testowania, wykonywania na bieżąco w trakcie programowania każdej linijki kodu. Clojure można osadzać w języku Java. Posiada on dedykowaną konsolę do uruchamiania kodu zwaną REPL (Read-Eval-Print-Loop), która umożliwia pracę zgodnie główną ideą Clojure napisz linijkę kodu, wykonaj, przetestuj, popraw i tak powtarzaj w pętli.

Clojure jest językiem funkcyjnym

Zapewnia to unikanie zmiennego stanu obiektu, proponuje funkcje jako obiekty "pierwszo klasowe", wspomaga iterację rekursywną zamiast ubocznego efektu rozwiązań bazujących na pęlach. Clojure powstał z myślą o zastosowaniach funkcyjnych, kiedy większość kodu wspiera ten sposób interpretacji rzeczywistości.

Clojure jest dialektem języka List

Idea - kod jako dane - zaczerpnięta z Lispa jest dość banalna a zarazem potężna. Opis funkcji w Clojure bazuje na systemie makr i danych, które te makra przetwarzają. Jednym ze znanych mi przypadków praktycznego użycia jest definicja cennika, który bazuje na makrach i strukturach danych zapisanych w jednym kodzie. Zmiana struktur danych jest możliwa na zasadzie pomyślnej interpretacji kodu Clojure. Mamy konwencję do przechowywania danych w strukturach, struktury, walidację oraz makra zapewnione na poziomie jednego języka/pliku opisującego byt/y.

Clojure jest w pełni współbierzne

Dzisiejsze systemy posiadają wiele niezależnych zadań działających na wielordzeniowych procesorach. Rozwiązania oparte o wątkisą dość kosztowne i skompilowane, ze względu na sekcje krytyczne i synchronizację. Clojure upraszcza wielowątkowość na kilka sposobów. Dzięki temu, że typy danych są niemutowalne (bezstanowe) możliwe jest łatwe rozpraszanie zadań.

Clojure jest osadzony na JVM

Clojure jest wbudowanym rozwiązaniem i bardzo dobrze integruje się z językiem Java, podobnie jak Groovy, czy Scala umożliwa tworzenie aplikacji które działają na jednej wirtualnej maszynie i na mogą róznież w ten współdzielić zasoby, przez co zarazem cachować w ramach jednej instancji JVMa.

ClojureScript - dedykowany dialekt tłumaczony do JavaScript

Oczywiście jak każdy współczesny język również Clojure zdecydowało się na posiadanie własnego odpowiednika JavaScript, który ma składnie Clojure, lecz pod spodem kompiluje się do Java Script i potrafi wykonywać się w ramach jednej aplikacji.

Jak na każdy niezależny język programowania przystało Clojure posiada również swój menadżer pakietów o nazwie Leiningen, który zadba o to aby zależności wymagane w projekcie zostały pobrane i ew. skompilowane do bajtkodu.

Polecam zapoznanie się z tematem jezyka programowania Clojure i byćmoże to będzie język przyszłości:-)

Linki:

http://clojure.org/

http://www.verious.com/board/AKumar/using-mutable-state-in-clojure/

http://clojure.com/

http://java.ociweb.com/mark/clojure/article.html

http://clojurescriptone.com/

10 stycznia 2014

Jak otworzyć wiele okien X11 - proporcjonalny podział ekranu

Spotkalem się dzisiaj z problemem jednoczesnego otwarcia wielu okien jakiegos oprogramowania w systemie X-window. Podejrzewałem, że skoro menadżery okien X11 radzą sobie z tym z automatu, to może coś z "x" na początku istnieje do tego celu i nie trzba pisać skryptów. Okazuje się, że x-tile pozwala na proporcjonalne otwarcie wielu różnych okien programów jednym kliknięciem.

Przypadek użytkowy - potrzebuje szybko zaprezentować w celu porównania 6 dokumentów PDF ew. obrazów JPG na jednym dużym monitorze. X-TILE świetnie sobie z tym radzi - testowałem na X11 w wersji GNOME na Ubuntu i polecam.

Poszczególne kroki działania

1. Wykonujemy polecenie otwierajace w tle wiele okien przegladarki z obrazkami dostepnymi w katalogu (z konsoli Linux):

find . -iname '*.jpg' -exec sh -c 'echo "{}" ; gthumb "{}" &' \;

2. Instalujemy x-tile z podanego x-tile

sudo dpkg-i ~/Downloads/x-tile_2.5-1_all.deb

3. Uruchamiamy zainstalowany program x-tile

x-tile

4. Wybieramy w x-tile aplikacje z listy i klikamy na ikonke, po czym wybieramy w ilu rzędzach i kolumnach chcemy rozłożyć okna

5. Poniżej przykładowy efekt działania z 6-cioma obrazkami JPG przypadkowo pobranymi z sieci

Może znacie jakieś magiczne skróty klawiszowe do tego celu ew. inne rozwiązania ... chętnie się dowiem jak to się robi na Mac OSX :-)

9 stycznia 2014

ArduSat - satelita Open Source & Hardware zbudowany jak Arduino - AVR w kosmosie

Jak miło czyta się kolejne wątki twórczości Open Hardware, które zbliżają nas do kosmosu ;-)

Otóż, okazuje się, że są na świecie fanatycy (czyt. fascynaci) wysyłania sztucznych satelitów i do tego testują kod Open Source na orbicie. Cały pic polega na tym, że projekt ArduSat powstał na kickstarter.com i pozwoliłz założenia programistom umieszczać swój kod na orbicie - a to dla każdego GEEKa, fana sci-fi, marzyciela-elektronika ;) ... zaiste fenomenalny pomysł !!!

Za ok. $500 można zakupić moduł do zbudowania własnego satelity o otwartych źródłach !!!

Ta powyższa wiadomość wstrząsnęła mną dość konkretnie, bo w sumie konstrukcyjnie nie jest to jakiś zaawansowany twór (zawiera 16-cie mikrokontrolerów AVR t.j. używam\ słynny projekt Arduino. Można powiedzieć, że jest to wieloprocesorowy projekt kompatybilny z Arduino.

Autorzy założyli, że jeden mikrokontroler będzie odpowiedzialny za jeden typ pomiaru, co może okazać się dość racjonalne na orbicie. Dlatego, że przy tak zmiennych warunkach atmosferycznych, w szczególności temperaturowych krzem może zachowywać się dość nieprzewidywalnie. Rozdzielenie kompetencji na wiele mikrokontrolerów jednoukładowych (czyli wyspecjalizowanych procesorów z przetwornikami w środku) zapewni utrate jednego pomiaru, jeśli zawiedzie procesor a nie 16-tu, gdyby wszystko było mierzone jednym kontrolerem. Oczywiście, jest też niezbędny nadzorca, który został tam zainstalowany i pełni rolę watchdoga oraz spina magistralę danych modułu.

Dla miłośników areonautyki i startów rakiet załączam pełnometrażowy dokument, który pokazuje umieszczenie ArduSat na orbicie :-) Przyjemnego oglądania i rozmyślania... byćmoże to Wy wpadniecie na kolejny takiej skali pomysł użycia popularnych 8-bitowych procesorów w wielkim eksperymencie

Linki:
* Ardusat access to a satellite in space for as little as 350