Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: miniaturki stron internetowych, test nowej aplikacji

Witam,

zapraszam do testowania i korzystania z nowego projektu:

http://webthumbnail.org


Obrazek

Jest to generator miniaturek stron internetowych, oto co aktualnie potrafi:

- proste w uzyciu api do osadzania miniaturek na stronach
- zrzuty ekranu od 50x50 do 2048x4096 pikseli
- trzy prawdziwe przegladarki: firefox, chrome, opera
- trzy formaty danych: png, jpg, gif
- renderuje flasha i html5
- serwer jest w stanie serwować nawet 500 gotowych miniaturek na sekunde
- infrastruktura jest w pełni skalowalna

Jak to działa?
Dodajesz adres url strony, serwer wrzuca ten adres do kolejki. Z drugiej strony jest chmura robotów, które pobierają dane z kolejki i tworzą zrzuty ekranu, które później znów lądują na serwerze www.
Infrastruktura nadaje się do zastosowań produkcyjnych i dużych serwisów www, w testach osiąga 500 requestów na sekunde z jednego serwera, a ilość robotów generujących miniaturki, może zostać zwiększona w miare potrzeb.

Technologia:
- Java (api, roboty)
- PHP (frontend, backend)
- PostgreSQL (baza)
- Bash, Python, ImageMagick, itd...
- FreeBSD (główny serwer)
- Linux, OpenVZ (roboty)

Jeżeli coś nie działa to piszcie, z góry dzięki za wszelkie komentarze!

(projekt jest w fazie Beta)Łukasz C. edytował(a) ten post dnia 26.03.12 o godzinie 15:14
Bartek B.

Bartek B. PHP, SQL

Temat: miniaturki stron internetowych, test nowej aplikacji

Łukasz C.:

Zapowiada się ciekawie.
Jaka licencja? W adresie pojawia się człon "api", będzie jakiś protokół do zdalnego generowania, czy tylko przez wywołanie adresu (tak jak jest to teraz robione)?
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: miniaturki stron internetowych, test nowej aplikacji

Bartek B.:
Łukasz C.:

Zapowiada się ciekawie.
Jaka licencja?
narazie beerware ;)

jak bedzie zainteresowanie to pewnie pojawi sie opcja platna, zeby pokryc koszty utrzymania uslugi
W adresie pojawia się człon "api", będzie jakiś protokół do zdalnego generowania, czy tylko przez wywołanie adresu (tak jak jest to teraz robione)?

narazie cale api jest na parametrach url, lada dzien bedzie klasa do obslugi tego z dowolnej aplikacji w php, a pozniej to sie zobaczy co uzytkownicy beda chcieli :)

konto usunięte

Temat: miniaturki stron internetowych, test nowej aplikacji

Dobrze byłoby gdyby screenshot nie zawierał elementów interfejsu przeglądarki np. paska z pytaniem czy przetłumaczyć stronę w chrome.
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: miniaturki stron internetowych, test nowej aplikacji

Krzysztof Kawa:
Dobrze byłoby gdyby screenshot nie zawierał elementów interfejsu przeglądarki np. paska z pytaniem czy przetłumaczyć stronę w chrome.
dodane do listy bledow, poprawi sie :)
Łukasz D.

Łukasz D. Software Developer,
DevOps Fan

Temat: miniaturki stron internetowych, test nowej aplikacji

Udało mi się puścić na chrome, link http://noc.gts.pl/500mb.gts który zaczął się pobierać ;)

Radzę poprawić, bo szybko miejsce się skończy i łącze.
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: miniaturki stron internetowych, test nowej aplikacji

Łukasz D.:
Udało mi się puścić na chrome, link http://noc.gts.pl/500mb.gts który zaczął się pobierać ;)

Radzę poprawić, bo szybko miejsce się skończy i łącze.

dzieki :)

ale tak jak pisalem wyzej, to nie dziala na serwerze na ktorym jest strona, wiec ani miejsce ani lacze sie szybko nie skonczy :)

konto usunięte

Temat: miniaturki stron internetowych, test nowej aplikacji

Ogólnie 100% swietna sprawa.

Wersja z IExplorerem byłaby tez niezła, można by czasem luknąć coś w tej abominacji bez odpalania wirtualek.

konto usunięte

Temat: miniaturki stron internetowych, test nowej aplikacji

Jak będziesz miał komercyjną wersję to daj znać. Jeden projekt chcemy wyposażyć w ten feature. Problem taki że trzeba by osobnego dedyka zaprzęgnąć do tej zabawy co na razie jest zbędnym wydatkiem. Więc przy rozsądnych cenach chętnie skorzystamy. A jak w przyszłości Twoja usługa będzie tańsza niż trzymanie własnego dedyka/dedyków od tego to na pewno będziesz miał stałego klienta.

Zwłaszcza że masz API dostępne co jest sporym ułatwieniem.

konto usunięte

Temat: miniaturki stron internetowych, test nowej aplikacji

Bardzo fajne :) Ciekawe tylko jak długo pozostanie darmowe :(
Daniel Cabaj

Daniel Cabaj Lider Zespołu

Temat: miniaturki stron internetowych, test nowej aplikacji

Ze swojej strony mogę podpowiedzieć, że przydałaby się opcja zrzutu całej strony. Można oczywiście manipulować wymiarami, ale nigdy nie wiadomo jak dużo się zmieści.
Kamil Mikołajczyk

Kamil Mikołajczyk programista Java /
Grails

Temat: miniaturki stron internetowych, test nowej aplikacji

Fajna rzecz, też bym chętnie wykorzystał w projekcie który mam w planach.

Uwaga ode mnie - filtruj zapytania o localhost itp., bo można zobaczyć coś czego zobaczyć się nie powinno:

http://api.webthumbnail.org/?width=1024&height=1024&fo...Kamil Mikołajczyk edytował(a) ten post dnia 27.03.12 o godzinie 12:14
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: miniaturki stron internetowych, test nowej aplikacji

bugfix: nie wyswietla juz paska translatora w chrome

konto usunięte

Temat: miniaturki stron internetowych, test nowej aplikacji

W któryś dzień chyba z 2h się tym bawiłem i znalazłem trochę bugów..

- filtruj localhost
- udało mi się odpalić mailto:, za pomocą redirecta z tinyurl.com
- za pomocą redirecta można odpalić wiele komend
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: miniaturki stron internetowych, test nowej aplikacji

kolejne poprawki doszly, glownie bezpieczenstwa, lada dzien beda nowe ficzery na produkcji
Paweł O.

Paweł O. Angular (v1-4) -
Javascript Frontend
Developer (zdalny)

Temat: miniaturki stron internetowych, test nowej aplikacji

Bardzo mi sie podoba, a czy jest mozliwosc zrobienia tak, zeby generowalo zrzut strony, tak zebym nie musial podwac wymiarow obrazka jaki ma wygenerowac ??? Jesli tak to bardzo byloby to wygodne i funkcjonalne
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: miniaturki stron internetowych, test nowej aplikacji

https://github.com/cepa/webthumbnail

pojawił się wrapper w php, prosta klasa, która umożliwia robienie zrzutów ekranów z poziomu php, kod nie korzysta z zewnętrznych bibliotek, jedyne wymagania to zainstalowany moduł curl.

przykład użycia:


$thumb = new Webthumbnail("http://goldenline.pl");
$thumb
->setWidth(512)
->setHeight(512)
->captureToFile($path);


i mamy zapisany obrazek do pliku :)

zachęcam do testowania, z góry dzięki za wszelki feedback.
Tomasz Zadora

Tomasz Zadora programuję

Temat: miniaturki stron internetowych, test nowej aplikacji

Jak planujesz sobie poradzić z potencjalną międzynarodową popularnością Twojego serwisu - tzn. miliardami requestów na dobę? Loadbalancing + NoSQL+datacenters na różnych kontynentach?

PS. http://www.webresourcesdepot.com/10-free-website-thumb... - część serwsów (już?) nie działa.Tomasz Zadora edytował(a) ten post dnia 21.04.12 o godzinie 16:33

Temat: miniaturki stron internetowych, test nowej aplikacji

Koniecznie zrób coś takiego aby była możliwość zrobienia zrzutu całej strony z informacją o dacie i czasie jego wykonania - całość opatrzona podpisem elektronicznym twojego serwera.

Szukałem kiedyś czegoś takiego żeby móc to ewentualnie w sądzie pokazać jako dowód i niestety nikt czegoś takiego nie oferuje, a moim zdaniem to perspektywiczny rynek - obecnie trudności dowodowe na tym polu są ogromne. Większość notariuszy nie chce potwierdzać treści stron internetowych, a ci co chcą biorą za to grubą kasę (spotkałem się z cenami 200 - 600 zł netto od sztuki).

Obecnie łatwo się wykręcić, że delikwent sobie w photoshopie zmajstrował taki dowód. A jeśli taki screenshot pochodziłby z zewnętrznego serwera, który robi zrzuty automatycznie i potwierdza czas wykonania to nie ma byka. Oczywiście nie ma gwarancji, że coś takiego zostałoby w sądzie uznane za dowód ale szanse jednak są większe.

Jak pomysł wypali to będę wdzięczny za 1% od zysków za cynk :-).
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: miniaturki stron internetowych, test nowej aplikacji

Tomasz Zadora:
Jak planujesz sobie poradzić z potencjalną międzynarodową popularnością Twojego serwisu - tzn. miliardami requestów na dobę? Loadbalancing + NoSQL+datacenters na różnych kontynentach?
Do miliardow jeszcze daleko, w chwili pisania tego postu jest ~5000 wygenerowanych miniaturek, ~70tys wyswietlen, ale tendencja jest wzrostowa

w testach na starym sprzecie z prockiem C2D 2.6ghz, 2gb ram, serwer łykał okolice ~500 requestow na sekunde, przy serwowaniu obrazka o rozmiarze ok 20kB co daje ok 9MB/s transferu.
W skali jednej doby daje to ~4,3mln requestow przy ~823GB wyslanych danych.
Mysle ze po przeniesieniu na lepszy serwer i zoptymalizowaniu waskich gardel dalo by rade wiecej, jakis zapas jeszcze jest :)

jezeli chodzi o skalowalnosc: obrazki sa zapisane na dysku, struktrua cache to drzewo hashujace, przy uzyciu NFS mozna to rozproszyc na np: 256 wezłów storage

serwer api jest w tej chwili jeden ale jest mozliwosc postawienia tego za loadbalancerem, aktualnie i tak stoi to za reverse proxy wiec byla by to kwestia dostawienia kolejnego wezla

z ciekawszych rzeczy, to udalo sie w miare wyeliminowac waskie gardlo jakim jest baza danych,
pod maska siedzi postgres, ALE:
- aplikacja korzysta z puli polaczen (40 stalych polaczen do postgresa)
- serwer jest napisany wielowatkowo
- wysylanie obrazkow nie generuje ZADNYCH zapytan
- wszelkie informacje o stanie licznikach itp sa trzymane w pamieci (ConcurrentHashMap)
- tylko jeden niezalezny watek (worker) zrzuca cyklicznie dane z pamieci do bazy
- czesc logiki jest w procedurach skladowanych, nie bylo problemow z deadlockami jak narazie

co do dostepnosci na wielu kontynentach to... akamai jeszcze to nie jest, ale mysle ze jak taki problem by sie pojawil to albo serwis umrze znacznie wczesniej albo beda srodki na rozwoj :)

Wojciech Małota:
Koniecznie zrób coś takiego aby była możliwość zrobienia zrzutu całej strony z informacją o dacie i czasie jego wykonania - całość opatrzona podpisem elektronicznym twojego serwera.
dzieki, pomysle nad tym :)

Następna dyskusja:

Integrator projektu stron i...




Wyślij zaproszenie do