![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 63 Pomógł: 0 Dołączył: 20.08.2008 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
Wiem że jest wątek w dziale Pro o pluginach w aplikacjach ale dotyczy on innego typu wtyczek. Mi chodzi o ich wersje jaką znają zwykli szarzy użytkownicy którzy nie widza większej różnicy między BHP a PHP.
Aplikacja nie ma być żadnym cms-em który instalujemy na swoim serwerze tylko zwykłą aplikacją webową i tu pojawia się problem jak umożliwić użytkownikom rozszerzanie funkcjonalność bo wiadomo że nikt nie jest w stanie napisać programu który zaspokoi oczekiwania wszystkich dlatego system pluginów byłby mile widziany. Takie rozwiązania niestety wymagają dodania do własnej aplikacji kodu osób trzecich a to do najbezpieczniejszych rzeczy nie należy. Rozwiązanie znane np. z Facebooka jest genialne w swej prostocie ale sprawia (tak mi się wydaje) sporo problemów z przesyłaniem danych z serwera do tych aplikacji. Z resztą rozwiązanie z iframe nie podoba mi się do końca bo nie dość że zabija ograniczenia co do wyglądu to jeszcze cholera wie co się dzieje z danymi wyciągniętymi do aplikacji głównej na serwerach dodatku. W moim przypadku pluginy nie mają być aż tak potężne by zmieniać całą aplikacje. Gdyby porównywać to do rozszerzeń w przeglądarkach to bliżej temu systemowi ma być do Chrome lub nawet widżetów w Operze niż mocnych, potrafiących zmienić całą przeglądarkę pluginów Firefoxa. Takie zwykłe małe programiki dodające np jedną ikonkę do paska narzędzi i pozwalające wyświetlić jakieś informacje lub obrobić istniejące, wypluć dane do innego formatu niż domyślne itp. W teorii jest bardzo fajnie ale gdy doszedłem do momentu myślenia o implementacji zaczęły się problemy. Generalnie widzę dwie opcje jak to można zrobić: Tworzenie: Opcja 1 - Online: Rozwiązanie dajce twórcom pluginów jakieś ładne IDE w serwisie gdzie mogą zrobić podstawowe GUI korzystając z danych im elementów (takie Visual Studio ![]() Wiadomo że udostępnienie pisania w czystym PHP lub JS jest niedopuszczalne i trzeba znaleźć alternatywę. Tutaj mocno zainspirowały mnie Smarty, pomyślałem że można by stworzyć taki własny pseudo język w obrębie PHP (więcej w części o języku;]). Takie rozwiązanie ma ten plus że kontroluje co twórca mi wysyła i mogę łatwo stworzyć bazę pluginów gdzie będą dodawane rozszerzenia po akceptacji. Dla użytkownika końcowego to też wygodne bo wchodzi sobie do tego mojego AppStore-a i wybiera co chce. Takie rozwiązanie wydaje się też bezpieczniejsze bo żadnego dziwnego pliku nikt nie wrzuci na serwer. Jest ono jednak kłopotliwe dla twórców. Opcja 2 - Offline: W tym wariancie zakładam wysyłanie na serwer paczki np zip w której jest kilka plików. Definicja i opis pluginu w XML, schemat interfejsu też w XML i sam kod jeszcze nie wiem w czym ![]() Pseudo opcja dla chętnych i posiadających za wiele czasu oraz mało znajomych 3 - Hybryda Połączyć obydwa rozwiązania. Język: Tutaj zaczęły się moje największe problemy, jak pozwolić komuś na odpalenia własnego kodu na moim serwerze, w obrębie mojej aplikacji i byłoby to na tyle bezpieczne bym nie został nazwany szaleńcem. Tak jak pisałem zainspirowały mnie Smarty i ich własny języczek używany w szablonach, jakby nie było komenda w stylu {loop &data}{/loop} nie może zbytniej szkody wyrządzić. Wiadomo że do napisania prostych pluginów nie potrzeba obiektów, super wyrafinowanych typów zmiennych, połączeń z bazą danych i innych bajerów. Implementacja najprostszych poleceń nie powinna być trudna, to jak tan język będzie wyglądać jest jeszcze do przemyślana. Miałem małą styczność z vb.net i pomyślałem że można by tutaj przeszczepić bardzo okrojoną wersję obsługi zdarzeń. Chodzi o to że jeśli mamy w interfejsie pole tekstowe o nazwie "text1" i obok przycisk "napisz Hello World" o nazwie "button1" to nasz kod mógłby wyglądać tak: Kod [GUI button1 "button1" [clickLive]] text1.text = "Hello World"; [/GUI button1] Takie coś generowałoby np taki JS: Kod $('#plugin_name_button1').click(function(){$('#plugin_name_text1').val('Hello World')}); Jest to szalenie prosty przykład, wiadomo że trzeba będzie wyjść też poza przeglądarkę i czasem stworzyć kod PHP i umożliwiać jakieś bardziej skomplikowane operacje ale myślę że mając podstawy nie będzie trudno to zrobić. Kolejny problem to filtrowanie, zabezpieczenie się przed wgraniem <php die(); ?> nie jest trudne ale jeśli udostępnię funkcję do obsługi ciągów to 'bbb<bbb?bbbpbbbhbbbpbbb-bbbdbbbibbbebbb(bbb)bbb;bbb-bbb?bbb>' może być niebezpieczne przy {replace $string | 'bbb' -> '' | '-' -> ' '}. Pytania: Co o tym sądzicie? Czy nie jest to rzucanie się z motyką na słońce? Może jest lepszy sposób na stworzenie tego systemu? O czym jeszcze nie pomyślałem? -------------------- Folio :: Blog |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 15:04 |