Archive

Archive for April, 2009

Qik a zagrzebywanie śmieci

April 27th, 2009 1 comment

Odkryłem dziś w Internecie fajną zabawkę. Nazywa się to Qik. Umożliwia nagrywanie wideo z telefonu bezpośrednio na stronę Internetową, a nawet więcej – umożliwia strumieniowanie wideo z komórki bezpośrednio na stronę WWW. Ci amerykanie są naprawdę niewybaczalnie dobrymi hakerami. Brawo!

Ja to działa? Instaluje się na nowoczesnym telefonie aplikację. Aplikacja wysyła obraz z kamery telefonu komórkowego do serwera Qik. Wykorzystywane jest połączenie Internetowe. Niby proste – ale naprawdę fajne. Więc do testów.

No i właśnie postanowiłem się pobawić Qik. Postanowiłem sfilmować gruz, który mam wygrzebuję z działki. Otóż, firma budująca postanowiła zagrzebać odpadki budowlane na terenie mojej działki. Ukryli je jakieś 10 centymetrów pod ziemią. Nie wiem ile ich jest i gdzie są, ale powinienem chyba je wygrzebać. Nie znam się na roślinach, ale wydaje mi się, że nie będą one zbyt chętnie rosły na odpadach budowlanych. Więc je wygrzebuje. A gdy wygrzebuję, to myślę sobie – ile razy zdarzyło mi się zagrzebać jakieś śmieci w kodzie. Ale jest różnica, ja – jak zagrzebuję coś w kodzie to staram się to oznakować komentarzem: FIXME, TODO, XXX. Czasem takie FIXME, odkrywa się na przykład po wielu latach i wtedy jest zabawnie. Ale najczęściej takie FIXME zasypuje się na tyle głęboko, że nikt go już nie znajdzie. Niestety, firma która zagrzebała mi śmieci na działce, zagrzebała je na tyle płytko – że muszę je wygrzebać i na tyle głęboko – że muszę się przy tym narobić.

I dlatego z taką przyjemnością opowiadam o tym testując rewelacyjną aplikację Amerykanów – Qik. Ciekawe, jak często amerykanie zagrzebują swoim klientom śmieci na działce?

Categories: Recenzje Tags:

Agregowanie z SimplePie

April 24th, 2009 No comments

SimplePie to biblioteka PHP której użyłem do czytania blogów.

Moim zadaniem było przepisanie do bazy danych postów z bloga. Mając adres URL bloga należy wczytać stronę bloga, znaleźć w niej odwołania do RSS (lub ATOM), następnie wczytać dokument RSS (lub ATOM) i zrozumieć go. Z dokumentu RSS (lub ATOM) należy wyciągnąć wszystkie wpisy i umieścić je w bazie. Zadanie było by trywialne, gdyby nie różnice w protokołach ATOM oraz RSS.

Z początku próbowałem zaprząc do tego celu Zend Framework. Niestety – działało to bardzo źle. Zniechęcony postanowiłem wypróbować inną bibliotekę. Wybrałem SimplePie. Działa prawidłowo – brawo!!!

Przykład użycia:

Categories: PHP Tags:

Jak implementować drzewo w bazie danych?

April 22nd, 2009 4 comments

Drzewo w bazie danych to jeden z problemów, o których fajnie się dyskutuje na studiach. Istnieje wiele sposobów implementacji drzewa, znany hacker Depesz wymienił 5. Niestety, często zapomina się o najważniejszych i najprostszych metodach. Żadnych identyfikatorów rodzica. Tylko ścieżka – która jest opisana tekstowo. Lub identyfikator rodzica i ścieżka. Na przykład:

Identyfikator rekordu

Identyfikator rodzica

Ścieżka

1

 

0001

2

1

0001 / 0002

3

1

0001 / 0003

4

3

0001 / 0003 / 0004

5

3

0001 / 0003 / 0005

6

1

0001 / 0006

7

1

0001 / 0007

 

Jakie są zalety takiego rozwiązania? Prostota implementacji, błyskawiczne wyszukiwanie potomków, szybkie wyszukiwanie rodziców, miłe przeglądanie bazy w konsoli SQL, szybkie sortowanie. Oczywiście, gdy potrzebujemy sortowania to należy użyć dodatkowego identyfikatora kolejności, na przykład:

Identyfikator rekordu

Identyfikator rodzica

Kolejność

Ścieżka # Kolejność

1

 

1

0001 # 0001

2

1

2

0001 / 0002 # 0002

3

1

1

0001 / 0003 # 0001

4

3

1

0001 / 0003 / 0004 # 0001

5

3

2

0001 / 0003 / 0005 # 0002

6

1

3

0001 / 0006 # 0003

7

1

4

0001 / 0007 # 0004

 

Zestawienie zalet i wad rozwiązanie z ścieżką:

  • Wady
    • Więcej miejsca na dysku
  • Zalety
    • Prosta implementacja
    • Prostota modelu
    • Błyskawiczne wyszukiwanie potomków
    • Szybkie wyszukiwanie rodziców
    • Szybkie sortowanie
    • Miłe przeglądanie bazy w trybie administratora

Czy są lepsze rozwiązania? Oczywiście. Wystarczy wprowadzić założenie, że w naszym drzewie może być tylko kilka poziomów zagłębienia i liczba ta jest określona przez programistę systemu. Wtedy, w bazie danych możemy zapisywać informację w następujący sposób:

Identyfikator rekordu

Rodzic poziom 1

Rodzic poziom 2

Kolejność

1

  

1

2

1

 

2

3

1

 

1

4

1

3

1

5

1

3

2

6

1

 

3

7

1

 

4

 

W świecie prawdziwych problemów, często właśnie ta trywialna implementacja drzewa będzie najlepsza: jest najprostsza w implementacji i jest rewelacyjnie szybka. Przykłady kodu:

Moim zdaniem, najprostsze rozwiązanie jest zwykle najlepsze.

Categories: Bazy danych Tags:

I Wszystkiego Najlepszego

April 10th, 2009 No comments

Moc prezentów od zajączka, co koszyczek trzyma w rączkach!!!

 

Z okazji Świąt postanowiłem wypróbować jak wysyłać wideo życzenia. Zacząłem od 12 sekund TV. Niestety, dziś ich serwery są przeciążone i nagrywało mi się kiepsko. Spróbowałem więc z YouTube. Otóż, w YouTube jest opcja pozwalająca na nagrywanie filmów bezpośrednio z kamery wideo. Czyli znaczy się, że programiści YouTube musieli pokonać trudności z którymi walczę na co dzień i koniecznie musiałem zobaczyć jak to zrobili. Będę miał referencyjną implementację z czego cieszę się niezmiernie. No cóż, nie wszystko się im udało, podobnie jak mi… Na przykład YouTube ucina ostatnie zdanie w nagraniu: “Życzę jaja święconego i wszystkiego najlepszego“. Ja zmniejszyłem ten problem obniżając jakość nagrania. W każdym bądź razie, będzie nad czym pracować, ale to już po Świętach!!!

Categories: Recenzje Tags: