czwartek, 15 stycznia 2015

Apache Spark pierwsze kroki

Apache Spark jest nowym systemem do równoległego przetwarzania danych. Dzięki swojej szybkości działania zastąpił dotychczasowy standard w analizie dużej ilości danych jakim był Hadoop Map-Reduce.
Warto tu jednak zaznaczyć, że Hadoop to cały ekosystem różnych systemów, z czego najważniejsze to:

  • HDFS - Rozproszony system plików
  • YARN - Framework do zarządzania klastrami
  • Map-Reduce - Framework przetwarzania danych
Spark zastępuje tylko ostatni komponent Map-Reduce. Może jednak wykorzystywać pozostałe 2 komponenty. 
Ponieważ ten artykuł jest wprowadzeniem do Spark-a, to opiszę użycie tego systemu bez podłączania go do Hadoop-a.


Instalacja

Jedyne wymaganie jakie nasz komputer musi spełnić by móc zainstalować Spark, to zainstalowana Java. Spark może zostać pobrany ze strony: https://spark.apache.org/downloads.html. Ponieważ nie będziemy używać Hadoop-a to pobieramy dowolną wersję binarną (Pre-built). Wersja Hadoop nie ma znaczenia.
Po pobraniu i rozpakowaniu system jest gotowy do użycia w wersji lokalnej. 

Liczymy słowa w tekście

Skoro Spark jest już zainstalowany to pora wykonać na nim jakąś pracę. Na początek spróbujemy policzyć ilość słów w tekście. W tym celu tworzymy plik lorem.txt i za pomocą ulubionego edytora wklejamy do niego tekst:
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Spark posiada powłokę za pomocą której można dokonywać obliczeń. Aby uruchomić powłokę należy wydać komendę:

./bin/spark-shell

Będąc w powłoce załadujemy nasz plik z tekstem:

val textFile = sc.textFile("lorem.txt")

i następnie policzymy ilość słów, we wszystkich liniach tekstu:

textFile.map(line => line.split(" ").size).sum

Gotowe!
W odpowiedzi powinniśmy zobaczyć, że plik zawiera 19 słów.

Podsumowanie

Jak widać praca ze Spark może być bardzo prosta. Oczywiście nie wykorzystujemy tu pełnego potencjału tego systemu. Ale o tym jak uruchomić Spark w klastrze, oraz jak pisać aplikacje zamiast używania shella, w przyszłych artykułach.

piątek, 29 listopada 2013

Jak zlecić wykonanie strony internetowej

Jeżeli nie jesteś programistą a potrzebujesz własnej strony internetowej to prędzej czy później trzeba będzie znaleźć kogoś, kto nam tą stronę wykona.
Jak to zrobić by nie przepłacić a jednocześnie uzyskać oczekiwany efekt?

To bardzo szeroki i trudny temat. Niestety większość tego typu projektów kończy się rozczarowaniem i to obustronnym. W tym artykule postaram się opisać na co zwrócić uwagę podczas umawiania się na wykonanie usługi.

Przygotowanie strony internetowej wymaga osób o różnych kwalifikacjach. Dlatego najczęściej prace tego typu zlecane są firmie. Możliwe jest również samodzielne zlecania poszczególnych zadań. Będzie to jednak wymagało koordynacja prac co najmniej 2 osób (grafika i programisty).

Zakres prac 

W przypadku strony www do wykonania są następujące prace.
  1. Projekt graficzny strony
  2. Pocięcie projektu na poszczególne elementy graficzne
  3. Przygotowanie serwera i opieka nad nim
  4. Zakup domeny
  5. Przygotowanie tekstów prawnych
  6. Oprogramowanie strony
  7. Pozycjonowanie
  8. Integracja z Google Analytics
Punkt 7 i 8 jest opcjonalny, ale wysoce zalecany.
Zlecając przygotowanie strony, upewnij się, że  wszystkie te prace zostały zlecone. Najczęściej przyczyną późniejszych nieporozumień jest brak jasności co do zakresu prac.


Projekt graficzny strony

Tu potrzebujesz grafika z umiejętnością projektowania stron. Przed zleceniem sprawdź wcześniej wykonane przez tą osobę projekty stron. Projekty graficzny to kwestia talentu i pewnej stylistyki. Sprawdź czy styl grafika odpowiada Twoim potrzebom
Podczas zlecania prac upewnij się, że na zakończenie otrzymasz wszystkie pliki źródłowe.

Pocięcie projektu graficznego

Grafik przygotuje projekt w postaci obrazków. Aby zamienić to na elementy strony, konieczne jest przerobienie (pocięcie) projektu na poszczególne elementy.
Pracę tą najczęściej wykonuje grafik, który projektował stronę. Rzadziej programista.
Upewnij się zlecając prace, że obejmują one pocięcie grafiki.

Przygotowanie serwera

Tą pracę najczęściej wykonuje programista piszący stronę.
Upewnij się, że jest to ujęte w zakresie pracy. Wynajem serwera to koszt rzędu kilkuset złotych rocznie. Najczęściej koszt ten nie będzie ujęty w pracach programistycznych
Na koniec prac powinieneś również otrzymać login i hasło do swojego serwera.

Zakup domeny

Niezmiernie ważne jest by domenę zakupić na swoją firmę! Potrzebujecie login i hasło do panelu zarządzania domenę.
Najlepiej domenę kupić samodzielnie.

Przygotowanie tekstów prawnych

Każda strona potrzebuje regulaminu. Jeżeli tworzymy zwykłą wizytówkę, to można odpowiednie teksty znaleźć za darmo, lub za niewielką opłatą.
W przypadku bardziej zaawansowanych stron. Wart skorzystać z pomocy prawnika.
Ani programista ani grafik tutaj nic nie pomoże.

Napisanie programu

Jedna z droższych pozycji. Umawiając się na prace zagwarantuj sobie w umowie przekazanie kompletnych źródeł do aplikacji. Wkrótce będziesz chciał wprowadzić nowe funkcjonalności na stronę. Bez źródeł może się okazać, że stronę trzeba napisać od nowa. Lub zmiany będzie mógł wprowadzić tylko programista, który oryginalnie pisał tą aplikację. Problem w tym, że ten programista może akurat nie mieć czasu, lub jego stawka może wzrosnąć kilkukrotnie (ze względu np. na brak czasu).

Pozycjonowanie

Każda strona powinna być wyszukiwana w Google i innych wyszukiwarkach.
Zupełne minimum tutaj to rejestracja w podstawowych wyszukiwarkach oraz opisanie strony odpowiednimi frazami.
Frazy musisz samodzielnie przygotować. Rejestrację może wykonać programista, ale upewnij się zlecając prace, że wchodzi to w zakres jego obowiązków. Wystarczy rejestracja w Google, Bing.

Integracja z Google Analytics

Mając stronę musimy wiedzieć ile osób na nią wchodzi. W tym celu stronę trzeba zarejestrować w Google Analytics. Rejestracja powinna odbyć się na Twoim koncie a nie koncie programisty.
Jak zwykle upewnij się, że wchodzi to w zakres prac do wykonania.

Podsumowanie

Mam nadzieję, że ten artykuł chociaż trochę pomoże zniwelować bariery między zleceniodawcą i zleceniobiorcą. O tym jak duże one są sam się kilkukrotnie przekonałem na własnej skórze (dają i biorąc zlecenia).

Jeżeli masz dodatkowe pytania, napisz. Postaram się na nie odpowiedzieć.


sobota, 3 listopada 2012

Analiza tekstów w języku polskim

W jednym z ostatnich projektów potrzebowałem narzędzi do prostej analizy tekstów. Niestety okazało się, że nie ma tu nic prostego :-) Nawet próba wydzielenia zdań z tekstu jest kłopotliwa. Na początku myślałem, że wystarczy podzielić tekst w miejscu kropki. Niestety, kropka jest używana w różnych skrótach (jak: np.) i w nazwach stron internetowych. Postanowiłem więc zobaczyć jakie zasoby są dostępne do analizy tekstów w języku polskim na internecie.

Gotowe biblioteki


opennlp.apache.org

Bardzo rozbudowana biblioteka napisana w języku Java. Niestety brak wsparcia dla języka polskiego.


http://nltk.org

Równie bogata biblioteka napisana w Pythonie. Również brak wsparcia dla języka polskiego. biblioteka ma natomiast tą zaletę, że zawiera wiele ciekawych korpusów.


http://morfologik.blogspot.com/

Analizator morfologiczny napisany w Java. Wykorzystuje metodę słownikową. Ciekawy i aktywny projekt.


http://www.getopt.org/stempel/

Algorytmiczny stemmer dla języka polskiego napisany w Java.


Korpusy języka polskiego


http://korpus.pl/

250 milionowy korpus języka polskiego. Dostępny w formie binarnej (ze względu na prawa autorskie tekstów), ale dostępny jest open sourcowy program do przeszukiwania słownika.


http://nkjp.pl

Ręcznie anotowany darmowy milionowy podkorpus  języka polskiego.


http://clip.ipipan.waw.pl/

Dużo ciekawych zasobów tym również korpusy języka polskiego.


http://www.mimuw.edu.pl/polszczyzna/pl196x/index_en.htm

Korpus z tekstami z lat 60 ubiegłego wieku. Zawiera 10 tysięcy próbek tekstu.


http://plwordnet.pwr.wroc.pl/wordnet

Polski wordnet lub jak go autorzy nazywają: Słowosieć. Ja na to mówię: rewelacja :-)


http://pl.wikipedia.org

Wikipedia zawieraj dużą liczbę artykułów w języku polskim. Po ściągnięciu tekstów robi się z tego całkiem duży korpus.


Podsumowanie

Przyznam się, że jestem mile zaskoczony bogactwem materiałów dla przetwarzania języka polskiego. Jednak na swoje potrzeby będę musiał połączyć kilka projektów. Szykuje się niezła zabawa :-)


Znasz inne ciekawe strony w internecie z darmowymi zasobami pomocnymi przy pisaniu programów do przetwarzania tekstów?
Podziel się nimi z nami.

sobota, 20 października 2012

Prognoza odwiedzin strony internetowej

W narzędziu AdWords pojawiła się nowa opcja pozwalająca sprawdzić prognozę ilości wyświetleń reklam dla wybranych słów kluczowych.

Jest to jednocześnie bardzo dobre narzędzie gdy chcemy sprawdzić czy warto na dane słowo kluczowe się pozycjonować. Aby to zrobić należy:
  1. Wybrać opcję Narzędzia i analiza -> Prognoza odwiedziń
  2. Wpisać frazę na które chcemy się pozycjonować. W moim przykładzie jest to: analiza danych



Następnie wprowadzamy wysoką stawkę dzienną i kosz za kliknięcie. Np. 100zł za kliknięcie i 1000zł stawkę dzienną. Ważne by kwota dzienna była na tyle duża, że budżet ten nie będzie wykorzystany.

Teraz możemy zobaczyć ilość wyświetleń reklam.


Ponieważ reklamy są umieszczany przy wynikach wyszukiwania. To można założyć, że ilość dziennych wyszukiwań wpisanego przez nas słowa kluczowego, nie przekroczy dziennych ilości wyświetlenia reklamy. A nawet będzie mniejsza, ponieważ reklamy pojawiają się również w sieciach partnerskich.

Dla słowa analiza danych jest to 142. Z mojego doświadczenia wynika, że te wskazania są dosyć dokładne i gdy uda się wejść do pierwszej 5 wyników wyszukiwań Google, to można liczyć że mniej więcej 20% osób wejdzie na stronę.

Czy warto się na tą frazę pozycjonować?
Oceńcie sami :-)

czwartek, 14 czerwca 2012

Jak założyć darmową stronę w internecie.

Jedną z ciekawszych ofert na założenie własnej strony internetowej jest Google Apps. Za pomocą tej aplikacji możemy za darmo założyć konto dla małej firmy zawierające:
  • Własną domenę
  • Własną stronę internetową
  • Rewelacyjną pocztę w naszej domenie dla 10 użytkowników. Odpowiednik gmaila.
  • Kalendarz
  • Dokumenty Google
W celu założenia konta należy wejść na stronę:
http://www.google.com/enterprise/apps/business/index.html. Następnie wchodzimy na opcję Pricing i Wybieramy tam opcję Free.

UWAGA:
Nie należy zakładać konta korzystając z opcji Free Trial, ponieważ po 30 dniach opcja ta będzie wymagała płatności.
Alternatywnie można skorzystać z poniższego adresu:
https://www.google.com/a/cpanel/standard/new3?hl=en.

Jeżeli nie masz jeszcze swojego adresu internetowego, to można go podczas rejestracji kupić za cenę 10USD (opłata roczna).

Masz pytania? Potrzebujesz pomocy z ustawienie konta na Google Apps?
Napisz, może będę mógł pomóc.


sobota, 12 maja 2012

Jak zdefiniować cele w google analytics

Aby zdefiniować cele w GA konieczne jest posiadanie odpowiedniego konta. Jeżeli jeszcze takiego konta nie masz, to zobacz jak to zrobić w artykule:Jak założyć konto w GA


Krok 1. Zdefiniowanie celu

Pora wybrać sobie cel, który chcemy mierzyć. Załóżmy, że mamy szkołę językową i celem serwisu jest zapoznanie odwiedzających z naszą ofertą. Liczymy, że osoby zainteresowane powinny wejść na stronę z naszym cennikiem. Czyli chcemy zmierzyć ile z wchodzących na nasz serwis osób zapozna się z cennikiem.
Wchodzimy więc sami na naszą z cennikiem i zapisujemy sobie URL do strony. Załóżmy, że ten URL to: http://mojafirma.pl/cennik.html


Krok 2. Utworzenie celu w GA


Aby zdefiniować cel w GA należy:
  1. Wejść na nasze konto GA. 
  2. Przejść na zakładkę: Admin
  3. Kliknąć Goal (zaznaczony czerwonym prostokątem)


Otrzymamy wówczas formularz w którym wpisujemy:
  1. Nazwa celu w naszym przypadku to: Obejrzenie cennika
  2. A typ to URL Destination
  3. Jako Goal URL wpisujemy tą część URL wybranego w kroku 1, która zaczyna się nazwie naszego serwisu. Czyli dla URL-a http://mojafirma.pl/cennik.html, wpisujemy /cennik.html

Następnie wybieramy przycisk Save.


Krok 3. Monitorowanie celu

GA nalicza cele tylko dla nowego ruchu. Aby więc zacząć obserwować nasz cel, należy odczekać co najmniej jeden dzień.
Ilość użytkowników, którzy zrealizowali cel serwisu można obejrzeć wybierając:
  1. Zakładkę Standard Reporting
  2. Z lewej kolumny wybieramy sekcję Conversions
  3. W sekcji Conversions wybieramy opcję Overview
Na ekranie dostaniemy wykres pokazujący ile osób w ostatnim czasie weszło na stronę zdefiniowaną jako nasz cel.



Masz pytania? Nie wszystko jest jasno napisane? Napisz w komentarzu, postaram się pomóc.

czwartek, 3 maja 2012

Kilka przydatnych terminów

API (Application Programming Interface) - Interfejs za pomocą którego komunikują się ze sobą programy komputerowe.

Bounce rate - Jest to procentowa miara określająca ile osób wychodzi z serwisu internetowego po obejrzeniu tylko jednej strony.

Google Analytics - Darmowy serwis on-line pozwalający analizować ruch na naszej stronie internetowej.

Page Rank - Jest to liczba z zakresu od 1 do 10, określająca ważność strony w internecie według wyszukiwarki Google.

RSS (Really Simple Syndication) - Skrót ten określa strumień danych zawierający informacje o zmianach na stronie.

Testy A/B - Testy strony internetowej (chociaż nie tylko) polegające na przygotowaniu 2 alternatywnych stron będących pod tym samym adresem. Część ruchu zapuszczamy na wersję A strony a pozostałą część na wersję B. Następnie analizując ruch porównujemy, która wersją sobie lepiej radzi.

URL -  Adres strony internetowej. Przykładowy URL to: http://www.onet.pl