Opiniowanie pakietow -- baza danych i nie tylko

Paweł Kołodziej pawelk w pld.org.pl
Sob, 3 Lut 2001, 22:45:43 CET


Dnia Sat, Feb 03, 2001 at 05:12:47PM +0100, Paweł Kołodziej napisał(a):
[qrna, jak to głupio wygląda -- jakbym romiawiał z samym sobą ;)]
> Fajnie. Kiedy otrzyamsz ten list prawdopodobnie będziesz już kończył, i
> rozglądał się za kolejnym zajęciem. Ja w między czasie przemyślałem sobie
> sprawe serwera do opioniowania pakietów. Wyszło mi, że jadnak zapsianie
> tego w <werble> C </werble> było by dość dobrym rozwiązanie. Dokładnie
> chodzi mi o część odbierającą raporty od użytkownika, wysyłającą mu
> "osobiste" statystiki. Powód: kompatybilność z wuchem. Przecież pisanie
> tego w czym innym spowodowało by koniecznośc dwukrotnego tworzenia kodu
> obsługi ankiet i sieci. Dalej masz ochotę to napisać ?

Jeśli tak, to daj znać. Może zrobił byś obsługe sieci (szeroko rozumianej)? 
Dokladnie IMHO przydało by się takie cos:

serwerek pracuje sobie caly czas, jak przychodzi zapytanie to sie forkuje
(niby mozna to zrobic na gniazdkach nieblokujacych, ale na poczatek to
chyba przesada) i obsługuje to połaczenie. Ma dostępne (to ja moge już
załatwić) takie funkcje:

/** rejestruje urzytkoniwka na serwerze, zwraca przydzielony mu numer */
int registerUser(char *nick,
		char *surname,char *firstname,
		char *email,
		int experienceLevel);

/** wrzuca do bazy raport o pakiecie 'package'. zwraca 0 -- ok, != jakis
    blad */ 
int addReport(int userNo,TpkgDescribe *package,
	int enviromentCount,TpkgDescribe *enviroment,
	int gradesCount, Tgrade *grades);

/** dodaje nowa "funkcje" do listy przypisanej do danego pakietu.
    Zwraca numer funkcji. */
int addNewFeature(int userNo, char *packageName,char * featureDescription)

/** Przypisuje pakietowi funkcje o numerze 'featrueNo' (tzn. dodaje
 * skojazenie ten pakiet ma taka funkcje, a nie tworzy nowej funkcji */
void addFeatureToPackage(int userNo, char *packageName, int fetureNo);


To w sumie na razie wszystko. IMHO nie ma sensu planować mechanizmu
pobierania opini, bo nie wiadomo co z tego wyjdzie i jakie zmiany bedą
jeszcze konieczne.

Teraz potrzebne jest takie miedzymordzie które, udostępni powyższe
funkcje dla wucha, ich "wywołania" prześle przez sieć do serwera, i tam
wywoła funkcje bliźniaczą z odpowiednio odtworzonymi parametrami.
Qrcze. Czuje, że nie wyrażam się jasno.
Widze to tak: wuch wywołuje funkcje miedzymordzia:
registerUser("boss","kowalski","jan","boss w bosi.w.pl",100);
międzymordzie zaminienia to na ładny pakiecik, robi gniazdko do
serwera, wysyła ten pakiecik. Serwer z pakietu odczytuje jaka funkcja i z
jakimi parametrami została wywołana, wywyłuje tą samą funkcję, z tymi
samymi parametrami, tyle że nie pochadzącą z miedzymordzia a z biblioteki
"serwerowej" (którą podejmuje się napisać) i przesyla do klienta wynik.


To jak zrobisz to ? W miare możliwości odpowiedz szybko (z góry dzięki
za wspaniały kod :).

a. i jeszcze te typy:

struct TpkgDescribe{
	char *name,
	char *EVR;
};

struct Tgrade{
	int featureNo,
	int grade,
	char *comment;  /* moze być NULL */
};


-- 
Paweł Kołodziej 
pawelk w pld.org.pl 
,,O ile nam wiadomo, komputer nigdy nie popełnił niewykrytego błędu.''
                                                 -- Weisert
		



Więcej informacji o liście dyskusyjnej pld-installer