Förslag på svar Tentamen etjänster och webb- programmering 2012-06- 14 Svar 1 Rollerna tjänsteleverantör och kund/klient föreligger Ej nödvändigt att kunden/klienten betalar för tjänsten Kunden har valfrihet att välja använda tjänsten Tjänsteleverantören har inte organisatorisk kontroll över användaren (ej anställd hos tjänsteleverantören) Social interaktion via IT- system IT- systemet ska vara fördefinerat för att självständigt kunna utföra och mediera handlingar Kund och leverantör behöver ej mötas ansikte- mot- ansikte Tjänstemötet äger rum via användning av IT- system Fördel att vi får ett oberoende av tid och plats för tjänstemötet Kunden använder tjänsteleverantörens IT- system Principen för icke- ägandet föreligger Kan gälla IT- systemet på förutsättningsnivå eller i handling IT- systemet ska inneha både rollerna som medium och utförare av kommunikationshandlingar b) 3 p Kunden har en valfrihet att använda Internetbanken genom att han/hon inte är tvingad till det genom att kunden fortfarande kan gå till bankkontoret. Den primära användaren av Internetbanken är inte bankens anställda. Kunden betalar också oftast en avgift för att använda IT- systemet. IT- systemet är utformat så att kunderna på ett självständigt kan utför olika handlingar som t.ex. att sätta in och överföra pengar mellan konton utan att behöva stöd av bankpersonal eller att träffa dem fysiskt. Användaren äger inte IT- systemet t.ex. genom att betala en licens för det och installera det på sin egen dator. IT- systemet utför mottagande och sändande handlingar på ett autonomt sätt i förhållande till kund och tjänsteleverantör. Svar 2. För att förstå samexisterande etjänster behöver man skilja mellan tre olika typer av samexisterande etjänster : fokala etjänster relaterade etjänster som man alltså kommer åt från den fokala etjänsten eller dess etjänstekomplement och som befinner sig ett länkningsavstånd bort från den fokala etjänsten
länknings- etjänst som via ett länkningsmeddelande tillhandahåller länkning från den fokala etjänsten eller dess etjänstekomplement till en relaterad etjänst med annan tjänsteleverantör. b) 3p. Analys av samexisterande kan t.ex. vara viktigt för att hitta olika sätt att finansiera etjänster. Ytterligare ett skäl är att komplexiteten i skärmdokumenten kan vara stor. Ur kundens perspektiv kan nätverken av skärmdokument och etjänster därmed upplevas som problematiska, dvs. det kan vara svårt att veta vilken etjänst som för tillfället tillhandahålls och vem som har ansvaret före etjänsterna. Svar 3 a) 5p - varje betydande internettjänst har baserat sig på en specialiserad databas - Data- och databashantering utgör en kärnkompetens i alla Web 2.0 företag - SQL har lika stor betydelse som HTML - En kärnfråga utgörs av vem som äger data. - att kontrollera information t.ex. via copyright har blivit lika viktigt eller mer viktigt än att copyright på programvara - företag kan också skaffa sig en ledande ställning genom att komplettera de data som de tillhandahåller med användargenererade data. Svar 4 a). Detta handlar om att man bygger etjänster som skall stimulera kunderna (användarna) att själva bidra med innehållet i etjänsten och om att det gäller att stimulera till att kunderna interagerar med varandra. b). Exempel på etjänster som lyckats och blivit stora med denna princip som grund är: - ebay som bygger på den aktivitet som alla köpare och säljare genomför - Amazon som har lyckats väl med att engagera användare att lämna bidrag t.ex i form av bokrecensioner och bättre sökresultat - Wikipedia som har lyckats engagera användarna att skapa ett lexikon utan expertinblandning Svar 5 Corporate distribution: Trots att Open Communities levererar bra programvara har man upptäckt att många kunder får problem med bl.a. support. Vissa programvaruföretag har specialiserat sig på att sälja tjänster som gör OSS programvara mer tillgänglig Sponsored Open Source: Etablerade programvaruleverantörer eller institutioner sponsrar vissa OSS- projekt. Programvaruleverantörer har
också i vissa fall öppnat upp sin egen kod och låter sina anställda arbeta med utveckling i en öppen miljö Second- Generation Open Source: Detta är en kombination av 3 och 4 b) 3p De erbjuder sina kunder ansvarskyldighet (accountability) vilket gör att kunderna tar en mindre risk när det gäller intrång på copyright och patent. Ovanstående fördel uppnås genom att källkoden är öppen så alla kan se att den inte är stulen. Det som är utmärkande med OSSG- programvara är att alla har tillgång till källkoden inte att den är gratis. De har tillgång till mycket kompetenta programmerare (talent base) som kommer från den ursprungliga OSS- rörelsen som kan bo varsomhelst i världen De kan erbjuda en miljö/kultur (ett ECO- system) av Websites, konferenser, communities som garanterar kunskapsspridning och kvalitet runt produkterna Svar 6 Kommunikationshandlingar: utförs med hjälp av språkliga symboler, resulterar i meddelanden, förändrar statusen i den sociala världen, skapar och förändrar sociala relationer b) Exempel på viktiga kommunikationshandlingar som utförs på blocket är t.ex. när annonsören registrerar en annons och tjänsteleverantören publicerar den. c) Kommunikation utgör en grundläggande del av social interaktion men social interaktion innebär inte bara kommunikation. Social interaktion är alla handlingar som är inriktad mot en annan social aktör. Svar 7 Kod som löser A, B, C D ser ut på följande sätt: <?php function display_sales($uid){ $conn = mysql_connect('localhost', 'mattias', '123456'); if (!$conn) exit; if (!mysql_select_db('mydb')) exit; $query = "SELECT Annonsör.Namn as namn, Bil.Registreringsnummer as regnr, Annons.Pris as pris, Bil.Mil as mil FROM Annonsör, Bil, Annons WHERE Annonsör.Konto_Id = $uid AND Annons.A_Id = Annonsör.A_ID AND Bil.Registreringsnummer = Annons.Regnr"; $result = mysql_query($query); if (!$result){ echo 'Ingen sådan användare finns!'; exit;
$firstpass = 1; while($r = mysql_fetch_assoc($result)){ if($firstpass == 1){ $namn = $r[ namn ]; /// XXX: <B1> Byt ut???. echo '<div class="cheader">'. $namn. '</div>'; echo <table><tr> ; echo <th>registreringsnummer</th><th>pris</th><th>mil</th>'; echo '</tr> ; $firstpass *= 0; // XXX: <B2> Byt ut???. echo <tr><td>. $r[ regnr ]. </td><td>. $r[ pris ]. </td><td> ; echo $r[ mil ]. </td></tr> ; if ($firstpass == 0) echo '</table'>; if(array_key_exists($_get, 'uid')) display_data(mysql_real_escape_string($_get['uid']));?> Kod som löser E ser ut på följande sätt: <?php function display_sales($uid, $maxprint){ $conn = mysql_connect('localhost', 'mattias', '123456'); if (!$conn) exit; if (!mysql_select_db('mydb')) exit; $query = "SELECT Annonsör.Namn as namn, Bil.Registreringsnummer as regnr, Annons.Pris as pris, Bil.Mil as mil FROM Annonsör, Bil, Annons WHERE Annonsör.Konto_Id = $uid AND Annons.A_Id = Annonsör.A_ID AND Bil.Registreringsnummer = Annons.Regnr"; if($maxprint) if(is_integer($maxprint)) $query.= LIMIT 0, $maxprint ; // XXX: antar maxprint > 0! else $query.= LIMIT 0, 5 ; else $query.= LIMIT 0, 5 ; $result = mysql_query($query); if (!$result){ echo 'Ingen sådan användare finns!'; exit; $firstpass = 1; while($r = mysql_fetch_assoc($result)){ if($firstpass == 1){ $namn = $r[ namn ]; /// XXX: <B1> Byt ut???. echo '<div class="cheader">'. $namn. '</div>'; echo <table><tr> ; echo <th>registreringsnummer</th><th>pris</th><th>mil</th>';
echo '</tr> ; $firstpass *= 0; // XXX: <B2> Byt ut???. echo <tr><td>. $r[ regnr ]. </td><td>. $r[ pris ]. </td><td> ; echo $r[ mil ]. </td></tr> ; if ($firstpass == 0) echo '</table'>; if(array_key_exists($_get, 'uid')) if(array_key_exists($_get, maxpris )) display_data(mysql_real_escape_string($_get['uid']), mysql_real_escape_string($_get[ maxpris ])); else display_data(mysql_real_escape_string($_get[ uid ]), NULL);?> Svar 8 a) En främmande är en primärnyckel som används som referens I en annan tabell med syfte att upprätthålla en referensrelation mellan från den tabell där den är främmade nyckel till den tabell där den är primärnyckel b) I tabellerna ovan är Konti_Id, Regnr, A_ID främmande nycklar Svar 9 Den semantiska skillnaden handlar främst om multiplicitet, där id är unikt och class inte är det. Med id avses därmed ett unikt element som definieras och nyttjas en gång per sida till skillnad från class som definieras för att återanvändas flertalet gånger per sida. Detta framgår även i andra sammanhang där begreppen nyttjas, jmf. class i valfritt objektorienterat programmeringsspråk och id som personbevis. Svar 10 mysql_real_escape_string() escape:ar tecken som skulle kunna nyttjas för en SQL- injection. Exempelvis blir ' istället \' osv. Svar 11 I vår första jämförelse utvärderas en tilldelning (notera att vi enkom har ETT =- tecken!) av 0, vilket får det booleska värdet False. Därför körs den första else- satsen. I den andra jämförelsen nyttjas ===- operatorn, och då VL är en bool och HL är en sträng blir svaret False, vilket betyder att else körs igen. Programmet skriver ut BB