![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Przyjaciele php.pl Postów: 1 467 Pomógł: 13 Dołączył: 22.02.2003 Ostrzeżenie: (0%) ![]() ![]() |
Piszę ten wątek tutaj ponieważ nie pasuje on chyba na php pro gdyż jego tematyka jest zbyt swawolna, a php to już nie to.
Ostatnio sporo myślałem nad systemem php.pl i doszłem do wniosku, że cały system (a raczej kontrola jądra nad modułami -> bezpieczeństwo) będzie w dużej częsci polegała nie na funkcjonalności jądra, ale na zauwafniu, że nikt z develeperów nie będzie umieszczał tam (w kodzie modułów) koni trojańskich ani nic takiego. Mówie tutaj, że jakiś moduł zamiast proszenia BSP o plik sam go sobie weźmie za pomocą sql-layer (tak to bede nazywał) zdobytej przez funkcje global. Może nie byłoby tak z samym systemem ale np. nieoficjalne wtyczki... Wtedy z pomocą przyszedł mi matrix 2 (sam nie wiem czy był taki nudny, że miałem czas pomyśleć spokojnie, czy wyciągnąłem wnioski z samego filmu (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ). Co prawda system (matrix) dał się złamać, ale oglądając go doszłem do pewnych wniosków jak dać jądrze kontrole nad aplikacją. W sumie doszłem do takiego wniosku. Jeżeli chcemy wiedziec co robi aplikacja (mówie ogólnie, w naszym przypadku moduł), czego używa a czego nie i jeszcze na dodatek to wszystko kontrolować, to aplikacja musi działać o poziom niżej w hierarchi od jądra. Innymi słowy aplikacja nie powinna być wykonywana przez parser języka (w naszym przypadku php), ale przez naszą aplikację. W ten sposób każda czynność, każda linijka kodu mogłaby być sprawdzana pod kontem niebezpieczeństw. Teraz następny problem. Ale jak to zrobić? Ano jak w temacie trzeba napisać własny język. Myślałem o tym. Nie pisałem jeszcze własnego języka i nie mam w tym doświadczenie, ale wymyśliłem jak mógłby wyglądać taki język naprzykład stworzony w XML'u. Pokarze tutaj jak wyobrażam sobie taki "hello world" dodatkowo ze sprawdzaniem parametru z GET'a. php:[php:1:adb267e0b1]<?php if( $_GET['say']==1 ) { print "Hello World"; } else { print "I won't say hello to you"; } ?>[/php:1:adb267e0b1] Własny język w XML'u: Kod <application> Nie wiem jak tam z moją angielszczyzną, ale mam nadzieje, że założenie jest zrozumiałe. Teraz w XML'u możemy każdą instrukcję sprawdzić i dopiero potem wykonać. Można by było definiować obiekty, a nawet np. stworzyć jezyk obiektowy za pomocą znaczników typu <math:sqrt><int>9</int></math:sgrt>.
<if> <warunek> <equal> <param source="get" name="say" /> <int>1</int> </equal> </warunek> <then> <out> <text>Hello World</text> </out> </then> <else> <out> <text>I won't say hello to you</text> </out> </else> </if> </application> Teraz moja największa obawa. Wydajność... Jak by to działało pod względem szybkości. Przy moich założeniach, że każde rozszeżenie poza standart (core) byłoby includowane specjalnym znacznikiem (jak use w perlu, import w pythonie czy dl w php) pamięc nie byłaby zbytnio obciążona. Takie coś wcale nie jest trudne do wykonania a daje olbrzymie możliwości, jak całkowia kontrola aplikacji instruckja po instrukcji i np. Jeszcze można np.dodac obsługe userów (napisane w php, jako część języka, a potem sprawdzać czy user ma dostęp do wykonywania określinych instrukcji), BSP (z poziomu języka nie można byłoby mieć dostępu do normalnego systemu plików) i można byłoby zboduwać naprawdę potęrzne środowisko do pisania aplikacji w których ważne jest to, że nie mamy całkowitego zaufania do kodu źródłowego. Wow, ale tekst wyskrobałem. Bardzo proszę o komentarze (jeżeli komuś będzie się chcuało to czytać) ponieważ dużo o tym myślałem i jestem ciekwa co Wy o tym sądzicie. Jeżeli są jakieś niejasności to pytajcie (ja mam wizje i wiem o co mi chodzi ale Wy nie jesteście mną (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ). |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 1 467 Pomógł: 13 Dołączył: 22.02.2003 Ostrzeżenie: (0%) ![]() ![]() |
post dobrze zrozumiałeś, ale nie miałem tutaj zamiaru podawać propozycji do wykorzystania z php.pl (gdybym tak chciał to bym napisał w php.pl - jądro), bo wiem jak to wszystko wygląda (php.pl jest tutaj po prostu przykładem). Chciałem poznać Wasze opinie oraz może również poznać Wasze pomysły na kontrole aplikacji.
Ad. 1. Co do dokumentacji takiego języka to oczywiście, że trzeba by było coś takiego zrobić (niestety, jakby dokumentacją nie mógł by być kod języka (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) ). Ad. 2. Czemu wyważanie otwartych drzwi. Nie znam sposobu kontroli skryptu w php. Jeżeli wykonuje się pewna część skryptu to się wykonuje i nie ma możliwości jej kontroli. Ad. Sorry, Jabol. Każdy pomysł wymaga odpowiedniego nakładu pracy, niestety jedne więcej inne mniej. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 18.09.2025 - 10:38 |