Hemtent Multimedidtbser, tnm05, VT004 Dvid Kästel, dvk7@student.liu.se 1. ) Mn väljer någon form v sptiellt index. Lämpligen R-träd, då det kn innehåll multidimensionell dt, i vårt fll koordinter och folkmängd. Trädrepresenttionen i sin tur består v objekt med pr v R, minst möjlig omgivnde rektngel och O, en pekre till objektet. Vår dt sprs lltså i lövnodern, vilk ll ligger på smm vstånd till rotnoden, men som frmför llt ligger när vrndr sptiellt. Dett ger stor träd med mer redundnt dt (eftersom rektnglr kn överlpp vrndr), men det snbbr upp den sptiell sökningen och insättning smt borttgning implementers lätt. b) Utifrån de givn koordintern trversers trädet tills rätt ort hittts. Syskonen till noden är ju som nämnts geogrfisk grnnr. Om mtchning med lgrd folkmängd mot eftersökt inte lyckts går mn vidre till syskonen i subträdet för tt se om de svrr mot kriteriet. Gör de inte det, går mn upp ett steg i trädet och undersök de intilliggnde underträden, med de närmste först. Mn fortsätter sedn tt gå uppåt i underträdsstrukturen tills mn funnit det som eftersöks.. ) Mn delr in metdt för bilder i tre typer: - innehållsoberoende: t.ex. en bilds storlek - innehållsbeskrivnde: som i sin tur dels in i domänberoende eller oberoende där den senre kn hndl om formt, kompressionnivå - innehållsberoende: egenskper (se nedn) Den sistnämnd torde vr v störst intresse vid bildsökning. Olik egenskper för en bild kn vr: - Färg och mättnd Lgring v respektive delfärgs (eller monokromtiskt) histogrm. - Struktur Texturberäkning som kombinert med histogrm kn nvänds för feture extrction. För mtchning med ndr bilder i sökning nges intressegrd v de homogen områden. Kn lgrs eller beräkns vid stunden för efterfrågn. - Form gränskoordinter lgrs - Position geogrfisk system - Globl egenskper i en subjektiv utseende -egenskp Att sök på en bilds egenskper är svårre än enkel textsökning, så SQL-sökning blir blir olämplig. Istället är det vnligt tt mn försöker hitt en bild som är lik ett exempel i något eller fler v ovnstående hänseenden. Dess gruppers således till en egenskpsvektor (feturevector), vilk kn vrier beroende på viktningen v nvändren. Dels vid lgring v metdt för en viss bild, då en subjektiv bestämning, om vd som är viktigt för just den bilden, görs. Och dels när mn sedn söker efter lgrt mteril utifrån en ny bild. Då mn återigen nger vikten v de olik egenskpskomponentern, vilk bildr en vektor som jämförs med lgrde dito. För tt snbb upp sökningen kn gruppering ske, se nedn. b) Vid klustrering v dt, i vårt fll, bilders metdt, tr mn hänsyn till följnde: 1. Mn försöker hitt den eller de egenskper som mn vill tt likheten sk mäts i, t.ex. färgvärden. Om mn vid sökning br tr hänsyn till en end egenskp för jämförelse klls lgortimen monotetisk, nnrs polytetisk. Oft hr mn fler dimensioner tt berbet så gäller det tt kunn jämför dem på en unik skl. Mn bestämmer då ett lämpligt sätt tt normliser värden. Då undviker mn tt extremvärden får llt för stor betydelse. Dett med hjälp v stndrdvvikelsen. 1
. Avgör om vi kn nvänd domänkunskpen till något. 4. T hänsyn till tillväggångssätt om stor dtmängder måste processess. 5. För tt bestämm klustren ser mn helt enkelt på vilk punkter som ligger närmst vrndr likt uppgift. Avståndet melln punktern beräkns prktiskt med hjälp v en vnlig k-medel-vståndsformel (se nedn). Klustreringslgoritmen kn ntingen vr hård eller fuzzy, hopnde eller delnde, deterministisk eller stokstisk, singel link eller komplett link. Dess skiljer sig för hur mn delr upp sin punkter och vilk beslut som sk ligg till grund för dels indelning men även fstställnde v tillhörighet (vstånd osv.). Mn kn dels se hur det dtstrukturmässigt (progrmmering) är lättst tt t.ex. sök element i de två givn schemn. Där hr båd en enkel geometrisk uppdelning genom ett rkt streck. Ingen tydlig vinnre lltså! Så då väljer mn tt koll på hur br grupperde punktern är gentemot sin mittpunkt. Genom tt nvänd k-medelsteknik, med beräkning v euklidiskt vståndet, kn mn vgör bäst klusteruppdelningen. Principen är tt mn beräknr vr mitten (m, s.k. centroid) v vrje kluster ligger och sedn tittr på elementens genomsnittlig vvikelse () från den punkten. Den totl genomsnittlig vvikelsen (A) för ll kluster i respektive schem vgör sedn hur br klustreringen är. i) C1: C: (8,4) m 1 C1tot p1 (8 5) (5 5) ( 5) 1 + (5,4) + + (4 4) p + (4 4) + (4 4) + + (,4) (1,0) m (4,6.7).1+. + 4.1 C tot 0.8 p (5,4) Ger för i-schemt en genomsnittlig vvikelse A (+.8)/.4 ii) C1: (8,4) m C1tot p1 1 + + (8,6) 6 1 p6 (8,5) C: (5,4) m C1tot p + (,4) + + 4 4 p + (,6) 4 + 5 p4 + (,8) p5 (.75,5..5) Ger för ii-schemt en genomsnittlig vvikelse A (1+)/ 1.5 Svret blir således tt det ndr klusterschemt är bättre eftersom den genomsnittlig vvikelsen från centroiden är mindre.
4. ) UMLklssdigrm Stommen i mäklrfirmns verksmhet är Objekt-dtbsen. Denn innehåller en rd både intressnt mindre viktig ttribut. Det är snrre ut iblnd instnsern, vilk ärver ll objektttribut, som mn kn nämn någr ord. Jg vlde tt del upp de olik boendeformern enligt ovn för tt det någorlund motsvrr de distinkt klsser mn möter ute i verklig livet blnd mäklre och i ndr bostdssmmnhng. Lokler kn vr v företgstyp, resturng, osv. Hus kn både hyrs och köps, liknr dock inte de villkor som gäller för lägenheter. Ett hus finns i olik former, typ, rdhus, vill osv. Vid köp måste fstigheten den står på bekts, även om fstigheter i sig kn säljs utn hus på, likdnt som hus kn stå på ofrigrund (dvs. utn fstighetsbetäckning). Olik typer v inteckningr för en fstighet kn vr
servitut eller nyttjnderätter. Bonitet står för är ett mått skogsbestånd. All dess subbklsser kn kompletters med ytterligre ttribut. Utn mängdbetäckning vid ssocitionerns ändr betyder 1. Implementeringsmässig lösning för ssocitionern återfinns i schemt nedn. b) Det mest väsentlig i hntering v ljud och bild/video tt mn måste synkroniser ljudet till videofilmen, så tt ljudet strtr när filmen strtr. En möjlig lösning är tt bk ihop ljud och video till smm fil, till exempel en mpeg-film. Problem i ll medihntering hur mn sk spr dtt. Som binär stor i objekt i dtbsen eller som sökvägr. Om mn väljer det sistnämnd gäller det tt mn hr en br struktur, som helst även är utomtisert och självförklrnde, eller väl dokumentert. Håller mn inte det i styr kn det exempelvis bli problem tt vet vilket ljud som hör smmn med vilken bild/videosekvens. Någon slgs indexering kommer förr eller senre bli ett måste för tt mtch informtionen. Sedn kn mn bekt huruvid mn sk låt nvändren ldd ner hel filen eller om mn sk kunn se eller lyssn till strömmnde medier. Ovsett, kn även det ställ till med problem. c) Som förklrt tidigre kn mn ju utifrån de bilder som finns lgrde i beskrivingsdelen v mäklrfirmn gör bildsökningr. Formen på fstigheten nges som sökkriterium. Antg tt mn från innn, med hjälp v färger i bilden, extrhert de strukturer som finns i bilden. Sedn hr mn mnuellt vlt ut den struktur som representerr konturen på huset. Knske inte så enkelt, och knppst självklrt tt det ger önskvärd resultt. Men hus med liknnde färg hitts säkerligen. En idé är tt kompletter informtionen med geogrfisk informtion, såsom en krt. Då kn mn enkelt mät vstånd från fstigheter till vägr som kn tänks stör, eller vr det finns friluftsområden. Oväntde och dold egenskper för ett hus, såsom någon form v ohyr, fuktskdor och dylikt kommer ldrig systemet till hnd. d) <?xml version"1.0" encoding"utf-8"?> <?xml version"1.0" encoding"utf-8"?> <xs:schem xmlns:xs"http://www.w.org/001/xmlschem"> <!-- Nedn fooljer ll klsser frn UML-klssdigrmmets klsser, hr som element. Utookning med ny element, jmfort med UML:n, hr gjorts foor tt koppl smmn klssern, se nedn --> <xs:element nme"mklrfirm"> <xs:complextype> <xs:element nme"firmid" type"xs:int" /> <xs:element nme"nmn" type"xs:string" /> <xs:element nme"dress" type"xs:string" /> <!-- osv... se UML-digrm --> <xs:unique nme"firm"> <xs:selector xpth"mklrfirm"/> <xs:field xpth"firmid"/> </xs:unique> <!-- unique-constrint setts i komplett (inte her) schem foor ll element med ett ID-subelement (id-ttribut i HTML) --> </xs:element> <xs:element nme"objekt" type"objektttribut"/> <xs:element nme"lgenhet" type"lgenhetsttribut"/> <xs:element nme"hyresrtt" type"hyresrttsttribut"/> <xs:element nme"bostdsrtt" type"bostdsrttsttribut"/> <xs:element nme"hus" type"husttribut"/> <xs:element nme"fstighet" type"fstighetsttribut"/> 4
<xs:complextype nme"objektttribut"> <xs:element nme"objektid" type"xs:int" /> <xs:element nme"dress" type"xs:string" /> <xs:element nme"tilltrde" type"xs:dte" /> <!-- osv... se UML-digrm --> <!-- rv, extends modellers i XML med hjelp v ComplexCOntent och extensions --> <xs:complextype nme"lgenhetsttribut"> <xs:complexcontent> <xs:extension bse"objektttribut"> <xs:element nme"pln" type"xs:int"/> <xs:element nme"hiss" type"xs:boolen"/> <xs:element nme"nnt" type"xs:string"/> </xs:extension> </xs:complexcontent> <xs:complextype nme"hyresrttsttribut"> <xs:complexcontent> <xs:extension bse"lgenhetsttribut"> <xs:element nme"hyr" type"xs:int"/> </xs:extension> </xs:complexcontent> <!-- likdnt foor bostdsrttsttribut --> <xs:complextype nme"husttribut"> <xs:complexcontent> <xs:extension bse"objektttribut"> <xs:element nme"vningr" type"xs:int"/> <xs:element nme"typ" type"xs:string"/> <xs:element nme"tomttyp" type"xs:string"/> <!-- osv... se UML-digrm --> </xs:extension> </xs:complexcontent> <!-- likdnt foor fstighetsttribut, se UML --> <xs:element nme"beskrivning"> <xs:complextype> <xs:element nme"beskrivning" type"xs:int" /> <xs:element nme"plnlosning" type"xs:hexbinry" /> <xs:element nme"foto" type"xs:hexbinry" /> <!-- osv... se UML --> </xs:element> <xs:element nme"person" type"personttribut"/> <xs:element nme"mklre" type"mklrettribut"/> <xs:element nme"kund" type"kundttribut"/> 5
<xs:complextype nme"personttribut"> <xs:element nme"personid" type"xs:int" /> <xs:element nme"nmn" type"xs:string" /> <!-- osv... se UML-digrm --> <xs:complextype nme"mklrettribut"> <xs:complexcontent> <xs:extension bse"personttribut"> <xs:element nme"nstllningsid" type"xs:int"/> <xs:element nme"lon" type"xs:int"/> </xs:extension> </xs:complexcontent> <xs:complextype nme"kundttribut"> <xs:complexcontent> <xs:extension bse"personttribut"> <xs:element nme"kundid" type"xs:int"/> </xs:extension> </xs:complexcontent> <!-- Nycklr --> <xs:element nme "Nycklr"> <xs:key nme"firmkey"> <xs:selector xpth "Mklrfirm"/> <xs:field xpth "firmid"/> </xs:key> <xs:key nme"objektkey"> <xs:selector xpth "Objekt"/> <xs:field xpth "objektid"/> </xs:key> <xs:key nme"mklrekey"> <xs:selector xpth "Mklre"/> <xs:field xpth "nstllningsid"/> </xs:key> <xs:key nme"kundkey"> <xs:selector xpth "Kund"/> <xs:field xpth "kundid"/> </xs:key> <!-- se foorklring till denn bindning nedn vid element "firmtillobjekt1" --> <xs:keyref nme"firmtillobjekt1" refer"firmkey"> <xs:selector xpth "firmtillobjekt"/> <xs:field xpth "firmid"/> </xs:keyref> <xs:keyref nme"firmtillobjekt" refer"objektkey"> <xs:selector xpth "firmtillobjekt"/> <xs:field xpth "objektid"/> </xs:keyref> 6
<xs:keyref nme"mklrehrkund1" refer"mklrekey"> <xs:selector xpth "mklrehrkund"/> <xs:field xpth "nstllningsid"/> </xs:keyref> <xs:keyref nme"mklrehrkund" refer"kundkey"> <xs:selector xpth "mklrehrkund"/> <xs:field xpth "kundid"/> </xs:keyref> <!-- OSV...--> </xs:element> <!-- Foor ll bindnigr i UML-schemt (hr, dministrerr, strp, osv...) kommer binds ihop i XML med referenstbeller likt vnlig RDMS. Her kommer ett exempel --> <xs:element nme"firmtillobjekt"> <xs:complextype> <xs:element nme"firmid" type"xs:int" /> <xs:element nme"objektid" type"xs:int" /> </xs:element> <!-- Her kommer ett till --> <xs:element nme"mklrehrkund"> <xs:complextype> <xs:element nme"nstllningsid" type"xs:int" /> <xs:element nme"kundid" type"xs:int" /> </xs:element> <!-- OSV...--> </xs:schem> 5. Med det knpp bkgrundsmterilet en rejäl krvspecifiktion brukr ju stå som grund för liknnde modelleringsprojekt så är mn tvungen tt gör viss ntgnden. Hndlr det exempelvis om ett kompetent fotoglleri (dvs. med viss dynmik) för Herr Någon, kn en renodld JSP-lösning vr enklst. Personligen hde jg i så fll föredrgit någon v de konkurrernde teknikern, ASP eller främst PHP. Inte minst med tnke på tt fler kommersiell webbhotell stöder dess frmför JSP, men även p.g.. en viss rädsl för komplexiteten kring llt det ndr med JSP Just de ndr bitrn är de intressnt för tt lös denn uppgift. Vi får helt enkelt nt tt det rör sig om ett större projekt där helhetslösningen skll inneftt: - mång nvändre - nvändre med vitt skild behov, därmed helt dynmisk men även med hög repetivitet - sklbrhet och plttformsoberoende - objektorientering, åternvändning v kod, funktioner - lågkostndskrv Vi hmnr på en helt nnn komplexitetsnivå. Därför vill vi dr nytt v hel progrmspråket Jvs potentil. Dett kn åstdkomms endst med inblndning v servlets och till viss del även med s.k. Jvbönor. Ovn tre nämnd jvtekniker, plus såklrt clientsidn och ppliktions- eller dtbskopplingen, finns ll representerde i Model-View-Controller-tekniken (se figur nedn). 7
Dett är en serversideimplementtion där ll komponenter hr sin respektive uppgifter. Den huvudsklig vgränsningen görs melln presenttions- och kontrollkomponenter. Presenttion (View) sker oftst med JSP (iblnd servlets) som genererr HTML eller XML-innehåll som skicks för rendering v nvändrgränssnitt v nätbläddrren. Här kommer lltså svret på frågn om HTML:s betydelse. Det nvänds fortfrnde som lyoutspråk för visning v text, grfik, bilder m.m. Tekniken tillhndhr även formulär för vidrebefordring vi http till server: Grunden för nästn ll interktivitet i ett dtbsdrivet system som dett. Vidre hnterr kontrollkomponentern (Control) dess http-förfrågningr. Denn del kn bestå v ntingen en servlet eller en JSP-sid. I fllet JSP kompilers förfrågn i en JSP-motor som i sig är en speciliserd servlet som är under hel servlet-kontinerns kontroll. Filen blir således en JSP-servlet. När klssfilen sedn är lddd sker ll kommuniktion (fråg/svr) vi metoden _jspservice(). I fllet servlet kompilers en källkodsfil, om den inte redn finns, till klssfil som i JSP-fllet. Denn klssfil kommer kunn åternvänds, vilket snbbr upp för efterföljnde nvändre. Smm clssfil som för JSP-fllet generers och mn nropr någon JSP-fil, eller eventuellt nnn servlet, för presenttion. Fktum är tt vi återkommer till inledningen v frågn. Mn kunde lik gärn löst det med JSP, inte minst med tnke på tt JSP i sig är enklre tt kod. Men även p.g.. tt endst små förändringr v nvändrgränsnittet kräver omkompilering v servlet:en, och mn tppr åternvändbrheten. Dett problem återfinns inte för JSP som redn från börjn är strkt kopplt (inbäddt i html) till presenttionen. (Kompilers iofs. lltid) MEN servlets kn mer: - körs inte i seprt processer - hnterr persistens - en end instns svrr för ll förfrågningr smtidigt - erbjuder färdig moduler för sessionshnering (med hjälp v cookies), äkthetsbevisning, kommuniktion med pplets och ppliktioner. Och här kommer vi till M:et i vår kronym MVC. För tt ytterligre bryt ner progrmmeringsprojektet kn s.k. bönor nvänds. Mn hr helt enkelt outsourct, för tt nvänd ett modeord, viss v beräkningstung och progrmmeringsintensiv delr i förkompilerde objekt, Models. På begärn hr dess skpts v Controldelen för tt exempelvis prt med en dtbs. Är det i ett inmtningsskede för vår multimedippliktion kn det hndl om tt exempelvis kod (komprimer) en bild. 8
En nnn bön kn sedn ccesss eller uppdters v presenttionslgret för tt exempelvis vis upp denn bild, omskld som tumngel. Dess bönor effekteviserr på så sätt tt mn åternvänder dem gång på gång och de behöver inte omkompilers förän totl systemförändring skll ske. Hel denn struktur möjliggör klr uppdelningr v rbetsbördn i en projektgrupp. Distingerr slutnvändr-kunnig progrmmerre från lgoritmtokr osv. Gör även hnteringen v dtflödet och kopplingrn mot dtbsen mer strtegisk och överskådlig, och systemet blir säkerligen mer säkert. 6. ) CGI, Common Gtewy Interfce Som hel den här frågn hndlr den här frågn om skpndet v webbppliktioner där innehållet och utseende kn förändrs genom inmtning v nvändren eller p.g.. ndr fktorer. Det hndlr lltså om det som uttrycks lite slrvigt: dynmisk webbsidor, likt fråg 5. En teknik som tidigt togs i bruk för dett ändmål vr CGI. Det är ett progrm som körs i reltid på serversidn och mtr ut i mång fll vnlig sttisk HTML. Färdigkompilerde ppliktioner för tt lös i princip ll tänkbr uppgifter, såsom koppling till dt bs. Mn kn nvänd språk som t.ex. C/C++, Fortrn, PERL, TCL, godtycklig Unix shell, Visul Bsic, AppleScript. Fördelr: - välutbredd teknik och stöd för mång språk och med ll typer v servrr - reltivt lättprogrmmert (beroende på språk) - flexibelt Nckdelr: - lägger stor börd på servern och vrje function som inkluders I körningen v cgi ger en ny uppgift (tråd) för servern. - kn bli långsmt. - lite dålig felhntering, I fllet formulär behövs räddning v ifylld värden implementers. b) Jv Servlets och JSP. För beskrivning v teknik och till viss delr svr på frågn se fråg 5. Fördelr: - körs inte i seprt processer - hnterr persistens - en end instns svrr för ll förfrågningr smtidigt - erbjuder färdig moduler för sessionshnering (med hjälp v cookies), äkthetsbevisning, kommuniktion med pplets och ppliktioner. - Full ccess to ll Jv APIs - Plttformsoberoende Nckdelr: - Progrmmtic HTML output is hrd to mintin: out.println( <html> ); Requires mnul compiltion. Low-level; hrder to work with (similr to ISAPI DLL) Better to use JSP for building HTML disply output. c) Socketr Socketr möjliggör kommuniktion melln processer/progrm i ett nätverk eller internt melln olik processer på smm dtor. Det finns olik typer v socketer beroende på nvändningsområde, de mn brukr prt om klls för connnectionbsed (klient/server-modell) och connectionless (internt melln kommunicernde processer). Även om de olik typern skiljer sig åt i metod så är tnken densmm. Att kunn få progrm skriv i olik språk tt effektivt kunn kommunicer med vrndr, utn påverkn v http-lgrets, och port 80, begränsningr. 9
Fördelr: - Mång servrr körs på unix, där det är socketskommndon är lättåtkomlig. Men det ger även möjlighet tt på ett smidigt och uniformt sätt kommunicer melln mskiner v olik typer. - progrmspråksoberoende och även enkelt tt få progrm som är skrivn i olik progrmspråk tt kommunicer - bättre möjligheter, ej bunden till port 80 och webbläsren - enkelt tt distribuer uppgifter från servern till klientern. Kn nvänds vid till exempel en renderingsfrm. Nckdelr: - Kräver tt både server och klient rbetr under smm förutsättningr, och tt de lltid jobbr med smm version v lösningr. - Kn bli svårt tt få en överblick över ett stort system då llt inte finns smlt centrlt på en server utn utspritt över fler servrr och klienter. - Till viss del bstrkt och svårbegripligt d) CORBA CORBA är ett försök till stndrdisering v objekttekniker, vilket leds v gruppen Object Mngmenet Group (OMG). Tnken är tt skp specifiktioner för tt få frm möjligheter till objektorienterd ppliktionsfunktionlitet och distribution oberoende v plttform, opertivsystem, progrmmeringsspråk, nätverk och protokoll. CORBA är en komplett Server-Klient modell och för tt kontrollert kunn sköt kommuniktionen melln dess så går ll förfrågningr vi en mäklre, Object Request Broker(ORB). Orben gerr som en Object Bus över vilken vrje CORBAobjekt intergerr trnsprent med ndr CORBA objekt som kn vr loklt plcerde eller på nätverk. CORBA är lltså ett exempel på en middlewre - en progrmvr som fogr smmn ndr progrmvror. Dett gör tt progrmmerre kn koncentrer sig på sitt progrm mer än hur de sk lös kommuniktion eller dtåtkomst. Fördelr: - ett språk- och plttformsoberoende (så länge en CORBA ORB är instllerd) objektorientert system för distribution - kostndseffektivt - binder inte utvecklingen till en viss leverntör - Finns bindningr till fler progrmspråk, C++, ADA, Smlltlk, Jv, C, COBOL,... Nckdelr: - Svårre än mång ndr liknnde tekniker tt implementer presenttionslgret på ett smidigt sätt. - reltivt komplicert e) Jv Web Smrt Fristående ppliktion som ldds hem till klienten som likt mång tekniker ovn gör nspråk på tt vr plttformsoberoende. Appliktionen kn görs godtyckligt stor och ger reltivt stor frihet i design. Den pcks ihop och kommer som en jr-fil. Krvet är Jv. JWS nvänder XML för tt beskriv det som sk ldds ner. Om ktuell version på servern redn finns hos klienten ldds inget ner utn den redn nerlddde versionen strts. Annrs ldds den ny versionen ner först. Fördelr: - utomtisk uppdtering eller åternvändning - självförklrnde dokumentstruktur som XML är br för ex. lång livslängd Nckdelr: - Jv Virul mchine krävs 10