Dokumentacja offline
Droso
31.05.2012
Może najpierw, wersja na Windows'a, (albo na coś innego) a nie parę wersji na raz, bo nic z tego nie wyjdzie.
G[o]Q
31.05.2012
<br />Może najpierw, wersja na Windows'a<br />
a od kiedy to program dobrze napisany pod windows nie dziala na telefonach/smartphone'ach ??
GwynBleidD
05.06.2012
Czy można prosić support amxx.pl o generowanie na bieżąco plików xml gdzieś w katalogu dokumentacji, o takiej mniej więcej strukturze:
Główny plik - szkielet drzewa
Gdzie w przypadku itemu:
title - nazwa funkcji
typ - forward, native, stock...
from - amxf jeśli nie jest zdefiniowany w dokumentacji (wtedy program pobierze angielską wersję z amxmodx.org), amxd jeśli jest zdefiniowany w dokumentacji
last-update - timestamp ostatniej aktualizacji opisu (i pliku xml funkcji)
Pliki opisu funkcji:
Tutaj mam nadzieję nie trzeba wiele wyjaśniać. Rozbite jest to na wiele plików, aby 1. nie pobierać jednego wielkiego, 2. pobierać w miarę możliwości tylko to, co zostało zaktualizowane. Struktura katalogów dobrze by była, jakby była taka, jak plików .inc (czyli każdy plik .inc to osobny katalog, a każdy plik to jedna funkcja). W podanym przykładzie pliku funkcji widać from="own" co oznacza, że definicja została stworzona przez użytkownika, na jego własnym komputerze i nie zostanie zaktualizowana na tą, z dokumentacji
normalnie znajduje się tam amxf albo amxd. Proszę o to, ponieważ robienie tego na własnym hostingu ze źródeł dokumentacji jest mocno nieefektywne...
Główny plik - szkielet drzewa
<amx-doku> <module title="Core"> <inc title="amxmodx"> <item title="abort" type="native" from="amxf" /> <item title="change_task" type="native" from="amxd" last-update="24123" /> .... </inc> </module> <module title="Cstrike"> .... </module> .... </amx-doku>
Gdzie w przypadku itemu:
title - nazwa funkcji
typ - forward, native, stock...
from - amxf jeśli nie jest zdefiniowany w dokumentacji (wtedy program pobierze angielską wersję z amxmodx.org), amxd jeśli jest zdefiniowany w dokumentacji
last-update - timestamp ostatniej aktualizacji opisu (i pliku xml funkcji)
Pliki opisu funkcji:
<item name="abort" type="native" from="own"> <param name="error">Kod błędu</param> <param name="fmt" type="const " array="1" default="""">Zwracany błąd</param> <param name="..." type="any:" /> <description> Przerywa działanie bieżącego callbacka, wysyłając runtime error. Możliwe jest określenie własnego komunikatu błędu NIE powinieneś wywoływać tej funkcji wewnątrz: - Filtra błędu lub modułów - plugin_natives </description> <notes>Nazwa pliku pluginu zostanie dopisana przed komunikatem błędu</notes> <example /> </item>
Tutaj mam nadzieję nie trzeba wiele wyjaśniać. Rozbite jest to na wiele plików, aby 1. nie pobierać jednego wielkiego, 2. pobierać w miarę możliwości tylko to, co zostało zaktualizowane. Struktura katalogów dobrze by była, jakby była taka, jak plików .inc (czyli każdy plik .inc to osobny katalog, a każdy plik to jedna funkcja). W podanym przykładzie pliku funkcji widać from="own" co oznacza, że definicja została stworzona przez użytkownika, na jego własnym komputerze i nie zostanie zaktualizowana na tą, z dokumentacji

Portek
05.06.2012
Więc zdecydujmy się na jedną wersję i jeszcze w tym tygodniu Wam to dostarczę. Tylko! Nie łudźcie się że każdy dostanie dostęp do tego pliku. Powód? Dość prosty - to społeczność amxx.pl tworzyła dokumentację, dając ten plik żywcem pozwalamy na skopiowanie tego...
GwynBleidD
08.06.2012
Różnice między wersjami moją i portka:
Ostatecznie proponuję moją wersję ze zmianami:
Dodatkowo można zmienić array w parametrach:
Użytkownik GwynBleidD edytował ten post 08.06.2012 21:08
- U mnie jest item, u portka funkcja. Trochę u portka powoduje to zaburzenie konwencji, dałbym jak już function. Ta nazwa akurat mało ważna, jedna linijka w kodzie.
- U mnie jest title, u portka name. Lepsze chyba name faktycznie (u mnie zauważyłem, że używam obu nawet
), też mało istotna zmiana
- U mnie jest możliwość podania większej ilości parametrów, każdy program może wtedy przeparsować te parametry jak chce. Tu proponuję zostawić większą ilość informacji w parametrach, nie każdy musi z wszystkich korzystać
- U portka jest to w jednym pliku! Gdy dokumentacja będzie kompletna, będzie to zajmowało kolosalną przestrzeń, lepiej to podzielić na mniejsze pliki.
Ostatecznie proponuję moją wersję ze zmianami:
- Zamienić title na name
- Zamienić item na function
Dodatkowo można zmienić array w parametrach:
- 0 lub nie podane - zmienna nie jest tablicą (brak [ i ])
- 1 lub więcej - zmienna jest tablicą ze zdefiniowaną długością (wartość zostanie wpisana pomiędzy nawiasy)
- -1 - zmienna jest tablicą z niezdefiniowaną długością (puste nawiasy).
Użytkownik GwynBleidD edytował ten post 08.06.2012 21:08
G[o]Q
08.06.2012
żeby sprawdzić czy jakieś funkcje zostaly wyedytowane / dodane i tak musisz pobrać wszystko zeby porównać z tym co masz więc zauważ ze jeśli będziesz pobierał kilka drobnych plików to czas który przeznaczysz na połączenie się ze stroną i na rozłączzenie się sprawi ze twoje rozwiązanie będzie wolniejsze niz pobranie całego pliku
G[o]Q
08.06.2012
ja mam na to inny sposób szczególnie ze aby wygenerować sume musisz pobrać wartości na podstawie których ją obliczysz więc praktycznie tracicie czas szybciej jest pobrać źródło i parsować w locie poprzez zwykłe porównanie treści
DarkGL
09.06.2012
goq chodzi mi o coś takiego że te sumy są gdzieś zapisane nie tracisz czasu na ich wygenerowanie ( generuje je serwer na którym działa skrypt zbierający dane )
GwynBleidD
09.06.2012
Goq, zauważ, że w moim pliku xml głównym jest coś takiego, jak last-update, czyli timestamp ostatniej aktualizacji funkcji. Jeśli jest większy, niż lokalnie zapisany, to pobierasz. Przy pierwszym pobieraniu owszem, mój sposób będzie mniej optymalny, jednak zawsze mogę dać do pobierania paczkę z w miarę najnowszą dokumentacją już razem z plikiem exe. Przy aktualizacji ten sposób będzie bardziej optymalny.
G[o]Q
09.06.2012
ale zeby odczytać plik i tego timestampa musisz go pobrać nie wazne czy bedziesz z niego czytal dalej czy nie
GwynBleidD
09.06.2012
Pisałeś, że muszę pobrać wszystko, a muszę tylko jeden plik
Ciekawe jak Ty aktualizujesz funkcje bez pobierania czegokolwiek


DarkGL
09.06.2012
timestamp może być przesyłany odzielnnie
podzielenie aktualizacji na dwa procesy najpierw porównanie i ustalenie które funkcje się zmieniły potem przesłanie tych funkcji
podzielenie aktualizacji na dwa procesy najpierw porównanie i ustalenie które funkcje się zmieniły potem przesłanie tych funkcji
Portek
09.06.2012
Wrrr, dlaczego stwarzacie problemy tam gdzie ich nie ma? Dorzucamy drugiego XML'a. Generalnie nie sprawdzałem jeszcze struktury bazy, ale zakładam że pozwoli na takie działanie nam:
http://portek.net.pl/example2.xml
http://portek.net.pl/example2.xml
R3X
10.06.2012
Portek, no to sprawdź i zrób tak jak podpowiada Ci programistyczny zmysł, bez sensu jest ta dyskusja o formacie XMLa, najłatwiej jest wypluć wszystko co jest w bazie (nie na razGeneralnie nie sprawdzałem jeszcze struktury bazy

MarWit
10.06.2012
Jeżeli nikomu się nie będzie chciało tego zrobić, to po 15 ( w końcu będę miał stały dostęp do maszyny ) mogę to napisać w C++QT/wxWidget
Co do pobierania danych, to może vdf, rss lub wypis wszystkich funkcji ( scieżki typu core/amxmodx/client_connected ) oraz skrypt php połączony z MySQL'em ? Ew. jeszcze crontab + program generujący plik documentation.dat. ( ofc. Ja wcale nie mówię że pomysł z XML jest zły
)


GwynBleidD
10.06.2012
Dorzućmy jeszcze możliwość sprawdzenia timestampa ostatniej modyfikacji pliku struktury i w wypadku braku aktualizacji czegokolwiek pobieramy tylko tego timestampa, w przypadku aktualizacji pobieramy timestamp, xml struktury i te funkcje, które uległy zmianie.
Pomysł z danymi do bazy danych nie jest najlepszy...
Co do xmlów, aby nie dawać wszystkim dostępu do wszystkiego, można ustalić dodatkowo coś takiego jak api key, czyli twórca każdej aplikacji musiałby uzyskać klucz i wpisać go do aplikacji. Aplikacja bez podania klucza nie dostawałaby plików xml, albo przynajmniej tych plików z treścią (strukturę może sobie pobrać, jakby chciał sprawdzić samo działanie updatera bez proszenia o api key etc.), więc mniejsze by było ryzyko kradzieży. Wiem, że api key jest tak samo bezpieczny jak wkodowanie danych do bazy w kod i tak samo łatwy do wydobycia, ale jak ktoś się sili na wydobywanie tego to po cholerę ma pobierać tą dokumentację, za ten czas napisałby skrypt ściągajacy całą aplikację z www i konwertujący go na xml
Skrypt generujący xmle wg mojej struktury mogę napisać, kwestia podania struktury bazy danych i wrzucenia później skryptu na serwer. Oczywiście będzie on w PHP i będzie uruchamiany tylko przy jakimś update, ewentualnie 1 raz dziennie
Pomysł z danymi do bazy danych nie jest najlepszy...
- ze skompilowanego programu da się te dane wyciągnąć
- wymaga to nadania dostępu z wszystkich możliwych IP
- wymagałoby wprowadzenia przez kogoś danych do bazy przy każdym update itp, dla każdego programu (już naliczyłem trochę zadeklarowanych osób, sam też robię program, właściwie tylko czekam na odpowiedź odnośnie łatwego udostępnienia danych itp.)
Co do xmlów, aby nie dawać wszystkim dostępu do wszystkiego, można ustalić dodatkowo coś takiego jak api key, czyli twórca każdej aplikacji musiałby uzyskać klucz i wpisać go do aplikacji. Aplikacja bez podania klucza nie dostawałaby plików xml, albo przynajmniej tych plików z treścią (strukturę może sobie pobrać, jakby chciał sprawdzić samo działanie updatera bez proszenia o api key etc.), więc mniejsze by było ryzyko kradzieży. Wiem, że api key jest tak samo bezpieczny jak wkodowanie danych do bazy w kod i tak samo łatwy do wydobycia, ale jak ktoś się sili na wydobywanie tego to po cholerę ma pobierać tą dokumentację, za ten czas napisałby skrypt ściągajacy całą aplikację z www i konwertujący go na xml

Skrypt generujący xmle wg mojej struktury mogę napisać, kwestia podania struktury bazy danych i wrzucenia później skryptu na serwer. Oczywiście będzie on w PHP i będzie uruchamiany tylko przy jakimś update, ewentualnie 1 raz dziennie

Użytkownik GwynBleidD edytował ten post 10.06.2012 18:47
GwynBleidD
12.06.2012
GoQ, skoro do prawie każdej gry istnieją cracki (w Diablo 3 część fizyki potworów jest server-side, więc jeszcze cracka nie ma, ale będzie jak tylko powstanie piracki serwer), to wątpię, żeby dane SQL dało się ukryć w bezpieczny sposób. A baza danych takiego forum, jak amxx.pl (wątpię, żeby dokumentacja była na osobnej) to bardzo łakomy kąsek dla wielu osób. Więc żart, czy nie żart, realizacja niemożliwa 
To będzie jakieś oficjalne API do pobierania tej dokumentacji? Czy musimy się sami "męczyć" z tym?

To będzie jakieś oficjalne API do pobierania tej dokumentacji? Czy musimy się sami "męczyć" z tym?
Użytkownik GwynBleidD edytował ten post 12.06.2012 10:18
sebul
12.06.2012
Co do tego pobierania danych z bazy danych, to chyba da się przecież utworzyć nowego usera, co więcej można nadać mu ograniczony dostęp, ale oczywiście jeśli dokumentacja jest na oddzielnej bazie, bo chyba nie da się ograniczyć dostępu do konkretnych tabel.
ogieR8
30.06.2012
Co do tematu, nie moja brożka, gdyż nie te umiejętności, więc Wam nie pomogę, ale bardzo by mi na takowej sprawie zależało, gdyż często piszę coś itd. bez dostępu do internetu, tym bardziej teraz - wakacje, zabieram lapa na domek letniskowy, a tam WiFi nie ma ; x
Ogólnie rzecz biorąc : jakieś prace idą w tym kierunku, czy zapomnieliście o temacie trochę ?
Ogólnie rzecz biorąc : jakieś prace idą w tym kierunku, czy zapomnieliście o temacie trochę ?