Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]"Zegar" graficzny
Forum PHP.pl > Forum > Przedszkole
neptus
Mam coś w rodzaju zegara - specyficzny wykres kołowy zależny od czasu. Wykres jest po skomplikowanych obliczeniach kreślony w php i wywoływany z parametrami.

Marzy mi się, by
1. Wykres odświeżał się automatycznie, powiedzmy, co 5 min.
2. Nie przeładowywać przy tym całej strony,
3. Sprawić wrażenie ciągłości tej operacji (mniej więcej jak obrót wskazówek zegara),
4. Skrypt i ścieżki do plików na serwerze w postaci explicite mają być niedostępne dla użytkownika.

PHP samo tego nie zapewni.
Jakieś skrypty w Ajax pewnie da się w sieci znaleźć i zaadaptować. Te skrypty jednak z definicji nie spełniają wymagania p-ktu 4., bo tam wszystko jest podane na tacy. A może się mylę i da się użyć ścieżek względnych bez ujawniania bazowej? Moje dotychczasowe doświadczenie jest w tej materii negatywne ale też ze względu na zbytnią otwartość kodu nie starałam się uczyć javascript. Wystarczały mi dotąd banalnie prościutkie gotowce.

Co mi radzicie? Zapomnieć o wykresach w PHP i zacząć kombinować np. z CGI? A może całkiem z czym innym? Szczerze mówiąc, nie mam jeszcze pojęcia, co można zrobić w CGI, czy to w ogóle obejmuje grafikę i jakiej jakości. Mam spore doświadczenie w programowaniu ale bardzo niewielkie w aplikacjach internetowych. Dotąd wystarczał mi HTML + PHP jako silnik obliczeniowy. Teraz czas na coś o większych możliwościach.
Do flasha jakoś nie mam przekonania. Te produkcje, co widzę, są mało ciekawe technicznie, wyglądają jak bohomazy z MSPainta.

Działam na wynajętym serwerze, żadna instalacja nie wchodzi w grę.
dr_bonzo
Cytat
1. Wykres odświeżał się automatycznie, powiedzmy, co 5 min.
2. Nie przeładowywać przy tym całej strony,
3. Sprawić wrażenie ciągłości tej operacji (mniej więcej jak obrót wskazówek zegara),

Flash?
W PHP + Ajax bys to zrobil gdybys animacji nie potrzebowla (niby mozna by kombinowac i wygenerowac posrednie klatki animacji miedzy 2ma wykresami, posciagac te obrazki a potem je szybko userowi wyswietlic, ale pewnie flaszem szybciej to zrobisz).

a "CGI" niczym sie od PHP nie rozni, jest tylko posrednikiem miedzy przegladarka a jakims dowolnym programem na serwerze.
neptus
Cytat(dr_bonzo @ 14.12.2008, 11:18:38 ) *
Flash?
W PHP + Ajax bys to zrobil gdybys animacji nie potrzebowla (niby mozna by kombinowac i wygenerowac posrednie klatki animacji miedzy 2ma wykresami, posciagac te obrazki a potem je szybko userowi wyswietlic, ale pewnie flaszem szybciej to zrobisz).

a "CGI" niczym sie od PHP nie rozni, jest tylko posrednikiem miedzy przegladarka a jakims dowolnym programem na serwerze.


Sorry, ale gdybym nie potrzebowała animacji, to po kiego grzyba mi jakikolwiek Ajax?

Nie trzeba nic pośredniego generować. Wystarcza odświeżanie co 4 min. To oznacza mniej więcej 1 stopień obrotu tarczy. Ciągłość nie polega na ilości klatek a na niezauważalnym odświeżaniu, choćby i różnice były radykalne. Zrobić to w aplikacji na komputerze to ja umiem. Cały obraz tworzy się w pamięci i ładuje do pamięci ekranu hurtem. W przeglądarce i PHP tak się zrobić nie da. Daje sie to zrobić np. w javie czy javascript, bo wtedy korzysta się z pamięci komputera odbiorcy. Ale coś za coś, za udostępnienie pamięci płaci się kodem źródłowym.

CGI samo jest programem na serwerze, a nie pośrednikiem. Tyle to ja akurat wiem. Nie wprowadzaj w błąd, jeśli sam nie wiesz, z czym się to je. Nie wiem jedynie, czy może wykonywać procedury graficzne. To jest do sprawdzenia ale obawiam się, że sporych rozmiarów aplikacja CGI będzie mulić i cały efekt szlag trafi.

Mam nadzieję na odpowiedź kogoś, kto ma zielone pojęcie o temacie.

Przykład 1:
strona http:astroalgorytmy.eu, panel "Teraz na niebie i Ziemi" pokazuje obraz nieba w momencie wyświetlenia strony. Każdy z kawałków panelu wymaga odświeżania z inną częstotliwością. Dla głównego fragmentu to będą 4 min, dla Księżyca wystarczy odświeżanie co 4 godziny, a w praktyce nikt nie będzie się na to tyle czasu gapił i mozna sobie sprawę odpuścić.

Przykład 2:
http://astroalgorytmy.eu/wiki/phpf/viewpage.php?page_id=24
Ten sam wykres, nieco bardziej rozbudowany i z odświeżaniem przez opcje meta "refresh". Dla demonstracji jest ustawienie co 1 min.
Działać to to działa ale przeładowywanie całego okna wygląda nieciekawie, czyt. nieprofesjonalnie. wacko.gif Przerysowanie wykresu nie powinno "skakać".
dr_bonzo
Z nowego opisu zupelnie co innego juz wynika.

Cytat
3. Sprawić wrażenie ciągłości tej operacji (mniej więcej jak obrót wskazówek zegara),
Zrozumialem to jako animacje przejscia miedzy dwoma kolejnymi wykresami


CGI - ja mowilem o tym http://en.wikipedia.org/wiki/Common_Gateway_Interface
Cytat
The Common Gateway Interface (CGI) is a standard protocol for interfacing external application software with an information server, commonly a web server.
- czyli NIE jest programem wykonujacym konkretne zadanie (np. generowanie obrazkow)

Cytat
Mam nadzieję na odpowiedź kogoś, kto ma zielone pojęcie o temacie.

A jak kogos takiego rozpoznasz?

Ostatecznie zrozumialem ze chcesz co X minut odswiezac obrazek, bez przeladowania calej strony.
Bardzo proste:
1. JavaScriptem co X minut pobierasz pik obrazka (http://server/obrazek.php?123123123 gdzie 123123123 to ilosc sekund od 1970roku - w php time())
2. obrazek.php generuje ci ten obrazek (albo z jakiegokolwiek zrodla go pobiera, bo nie wiem jak je tworzysz), mozesz skorzystac z keszowania, i zapisywac obrazek gdzies na dysku serwera (zeby go nie generowac za kazdym razem)
3. w JS tworzysz obiekt Image, img = new Image(); img.src = 'http://server/obrazek.php?123123123'
co spowoduje ze obrazek sie sciagnie do przegladarki
4. podmieniasz obrazek na stronie na ten nowy, tzn wymien src="" javascriptem w <img />

Jesli obrazek generuje i sciaga sie szybko ( hmm < 0.1s) to mozesz pominac pkt 3.
neptus
Cytat(dr_bonzo @ 14.12.2008, 20:23:30 ) *
Z nowego opisu zupelnie co innego juz wynika.


Z Twojego też.

Cytat
CGI - ja mowilem o tym http://en.wikipedia.org/wiki/Common_Gateway_Interface
- czyli NIE jest programem wykonujacym konkretne zadanie (np. generowanie obrazkow)


Format COM, EXE, czy TTF też jest tylko protokołem. Plik w formacie .cgi to regularna aplikacja, napisana np. w C++ czy w pascalu i skompilowana do formatu cgi zamiast exe, bo ma to pracować w innym środowisku niż Windows. Każdy system ma własne protokoły dla plików wykonywalnych. Interpreter CGI to w Internecie odpowiednik COM. Ograniczenia narzuca tu środowisko i możliwości samego interpretera.

Cytat
Ostatecznie zrozumialem ze chcesz co X minut odswiezac obrazek, bez przeladowania calej strony.
Bardzo proste:
1. JavaScriptem co X minut pobierasz pik obrazka (http://server/obrazek.php?123123123 gdzie 123123123 to ilosc sekund od 1970roku - w php time())
2. obrazek.php generuje ci ten obrazek (albo z jakiegokolwiek zrodla go pobiera, bo nie wiem jak je tworzysz), mozesz skorzystac z keszowania, i zapisywac obrazek gdzies na dysku serwera (zeby go nie generowac za kazdym razem)


Pisałam, że tworzę wykres z obliczeń. Musi być wyliczany i generowany za każdym razem, bo za każdym razem to jest inny obraz. Ziemia wiruje, przesuwa się na swojej orbicie, a w tle latają sobie jeszcze planety, Księżyc i inne zabawki. Obraz nieba w danej chwili jest niepowtarzalny, więc podobieństwo do zegara jest tylko częściowe. To taki zegar z lekko obluzowanymi wskazówkami. winksmiley.jpg

Cytat
3. w JS tworzysz obiekt Image, img = new Image(); img.src = 'http://server/obrazek.php?123123123'
co spowoduje ze obrazek sie sciagnie do przegladarki


Jak to zrobić, żeby nie podawać pełnej ścieżki? Próby włamań już miałam, póki co nieskuteczne ale... Parametry też nie powinny być widoczne, bo wtedy wywołanie obrazu (z obliczeniami) można wkleić na dowolną stronę. Pisałam, że dlatego nie podoba mi się rozwiązanie z javascript. Dostępny może być tylko aktualny wynikowy obraz jako np. obrazek.png. To nie jest GNU, włożyłam w to masę trudnej wiedzy i pracy. Za darmo tej wiedzy nie dostałam. Chcę z tego mieć jeśli nie kasę, to chociaż ruch na stronie i uznanie. Bywam próżna. wstydnis.gif

Cytat
4. podmieniasz obrazek na stronie na ten nowy, tzn wymien src="" javascriptem w <img />


Co znaczy "wymień src="" w <img />" ? Podpowiedz jakąś nazwę procedury czy cokolwiek, co ma jakąś nazwę i czego opisu można szukać.

To wszystko ma być w jakiejś pętli, czy może to jest jakaś funkcja-automat?

Sorry, jeśli pytania sa głupie. Nie znam w ogóle javascript. Rozumiem w tym języku jedynie obliczenia.

Cytat
Jesli obrazek generuje i sciaga sie szybko ( hmm < 0.1s) to mozesz pominac pkt 3.


Obliczenia i kreślenie są szybkie (poniżej 0,05 s) - algorytm mam wydajny, a to całkiem niezły serwer. Niestety, nie działa antyaliasing w GD ale tego już nie przeskoczę. Natomiast ładowanie to sprawa sieci i sprzętu użytkownika. U jednego będzie szybko, u drugiego krowiasto. Na to wpływu nie mam tak samo, jak i z każdą gotową grafiką, a rysunek nie może być zbyt mały, bo straci czytelność. Może więc jednak warto skorzystać z przechowalni przeglądarki przez wzgląd na różną jakość odbioru u użytkownika? Żeby nie było, że obraz generuje się w 0,02 s, a ładowanie trwa 0,5 min. Podmieni wtedy, gdy już go ściągnie, a opóźnienie będzie niezauważalne.

Thx, może to i dobre rozwiązanie. Tylko to bezpieczeństwo... sadsmiley02.gif
erix
Cytat
Format COM, EXE, czy TTF też jest tylko protokołem.

EXE, to protokół... Hmm, odkryli grawitację boczną.

Cytat
Plik w formacie .cgi to regularna aplikacja, napisana np. w C++ czy w pascalu i skompilowana do formatu cgi

http://pl.wikipedia.org/wiki/CGI

Cytat
Co znaczy "wymień src="" w <img />" ? Podpowiedz jakąś nazwę procedury czy cokolwiek, co ma jakąś nazwę i czego opisu można szukać.

Zmiana atrybutu obiektu. Patrz: Google. Dość często poruszany temat.

Cytat
Musi być wyliczany i generowany za każdym razem, bo za każdym razem to jest inny obraz. Ziemia wiruje, przesuwa się na swojej orbicie, a w tle latają sobie jeszcze planety, Księżyc i inne zabawki. Obraz nieba w danej chwili jest niepowtarzalny, więc podobieństwo do zegara jest tylko częściowe. To taki zegar z lekko obluzowanymi wskazówkami.

Jeśli chodzi o JavaScript, to z animowanych znalazłem tylko: http://code.google.com/p/flot/

Właściwie, to pozostaje Ci tylko flash/java... Współczesne technologie mają, niestety, ograniczenia, a jak napisałaś - kiepsko u Ciebie z JS, to po <canvas /> raczej nie porysujesz...

Może tu coś znajdziesz: http://www.webresourcesdepot.com/category/goodies/charts/
neptus
Dziękuję ale nie skorzystam. To nie spełnia p-ktu 4.

Javascript skutecznie niszczy piękne zabezpieczenia PHP.
Ba, Java jest stworzona do animacji ale i Java i Flash same się pchają użytkownikowi na dysk. Dekompilatory w sieci widziałam. Nie wspomnę już o tym, że w dobry kompilator do nich trzeba by ponadto zainwestować sporą kasę, której nie mam, a dbając o swoje interesy, prawa autorskie staram się honorować.

Jeśli już mam się na stare lata czegoś uczyć od zera, to to musi mi dawać właściwy efekt. Mam zbyt mało wolnego czasu, by to miała być tylko sztuka dla sztuki. Mam jeszcze sporo pomysłów na fajne skrypty.

Widywałam w Internecie bardzo ciekawe aplikacje, gdzie nic nie widać, jak to jest zrobione ale jeszcze dojdę do tego. cool.gif Jestem w takich sprawach piekielnie uparta. aaevil.gif

Dzięki za dobre chęci.
erix
Sory, ale tak na dobrą sprawę, aby spełnić Twoje wymagania, to należałoby niczego nie wysyłać do użytkownika. Taka prawda.

Trochę fanatyczne jest to Twoje spojrzenie, ale cóż - wolnoć Tomku....
neptus
Przesadzasz i to mocno.

Mam od wieków dział, gdzie udostępniam za friko mnóstwo algorytmów, grafik, słownik itd. Olbrzymia kolekcja. I jeszcze użeram się z leniami, co nie potrafią czytać podstawowych wzorów i nie znaja podstaw arytmetyki.

Coś muszę zachować dla siebie, żeby mieć z czego zyć. Po stronie klienta ma byc wynik obliczeń i to starczy. Nic więcej użytkownikowi nie jest potrzebne. Wiem, że taka budowa strony jest możliwa, bo takie strony istnieją. Na przyszły raz, gdy coś takiego napotkam, po prostu zapytam autora, z czego korzysta.
decha-design
Przepraszam, że się wtrącę w Waszą rozmowę ale:
Cytat(neptus @ 15.12.2008, 01:03:22 ) *
Na przyszły raz, gdy coś takiego napotkam, po prostu zapytam autora, z czego korzysta.
Nie sądzisz, że jeśli ten 'autor' korzysta ze swojego własnego skryptu/dzieła/programu (jak zwał tak zwał) to Ci to tak po prostu udostępni? Popatrz na Siebie. Ty nic nie chcesz udostępnić... to tak nawiasem ...
neptus
Cytat
Nie sądzisz, że jeśli ten 'autor' korzysta ze swojego własnego skryptu/dzieła/programu (jak zwał tak zwał) to Ci to tak po prostu udostępni?


Nie, nie sądzę, że udostępni i wcale tego nie oczekuję, że dostanę za friko jakiegoś gotowca. Wystarczy mi wskazanie, w czym to jest zrobione. Mogę też zapłacić pracą w dziedzinie, w której to ja akurat jestem dobra. Od ponad 40 lat utrzymuję się z pracy własnego umysłu. Wiele materiałów też w ten sposób zdobyłam z pozytkiem dla obu stron. Was też nie prosiłam o gotowe rozwiązania, tylko o wskazanie odpowiedniego typu oprogramowania. Chyba po to ktoś to forum założył?

Cytat
Popatrz na Siebie. Ty nic nie chcesz udostępnić... to tak nawiasem ...


Ależ bierz, ile chcesz! Tu rozdaję za darmo: http://astroalgorytmy.eu/wiki/algorytmy/ . Było już o tym wcześniej i wystarczyło przeczytać. Towar jest wartościowy, sprawdzony i wielu ludzi z niego już skorzystało, a ja opłacam z własnej kieszeni serwer. Udzielam także licznych darmowych porad i dzielę się wiedzą na forach i nie tylko, za co ludzie mnie cenią. Tyle, że akurat w całkiej innej tematyce niż tematyka tutejszego Forum. Ty pracujesz za darmo? Chyba, że jeszcze nie pracujesz. To tak nawiasem...

To, że nie znacie rozwiązania problemu, nie upoważnia Was do ferowania ocen mojej osobowości. Dowartościujcie się inaczej. Przepraszam, nie zauważyłam, że to forum młodzieżowych bojówek amatorów psychologów. Nazwa mnie zmyliła. dostal.gif
erix
Cytat
że to forum młodzieżowych bojówek amatorów psychologów.

A że ocenia się POGLĄDY, a NIE ludzi, to powiem tak:

Cytat
Ty pracujesz za darmo? Chyba, że jeszcze nie pracujesz. To tak nawiasem...

nie dość, że podsuwamy Ci za friko rozwiązania, na których chcesz zarabiać kasę, to jeszcze wyzywasz forumowiczów. Wśród nich jest naprawdę wielu wartościowych specjalistów i jeśli oceniasz każdego przez pryzmat wieku, to jesteś w dużym błędzie. Znajdę Ci parę osób, które pomimo tego, że są od Ciebie parę razy młodsi, to wiedzą dużo bardziej przerastają takich, jak Ty.

Cytat
Chyba po to ktoś to forum założył?

Owszem, ale kultura obowiązuje wszędzie. Nie tylko na Twoim forum.

EOT, bo jeszcze zacznie się flame + warny. Masz coś jeszcze do powiedzenia, PW.

A żeby post nie był całkiem OT, to powiem tak - jesli chcesz przesyłać wyniki danych w czasie rzeczywistym i w takich odstępach czasu, to raczej sobie odpuść albo zainwestuj w łacza bezlagowe, bo takie timingi, jakie chcesz osiągnąc przy przeciążeniach są raczej nierealne.
neptus
Czy to forum nie ma moderatora?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.