Terav C - Võrgurakendused 2 - projektileht

From ICO wiki
Jump to navigationJump to search

Üldist

Liikmed

  • Aleksandr Laidoner
  • Oliver Dalberg
  • Tarmo Sillajõe
  • Andre Tšernikov

Teema valik - Pildiportaal

Valisime teemaks pildiportaali.

Ülesanne 1 - XML

Tähtaeg 15.04.2013

XML - fail

Antud xml'i annab välja Pildiportaali veebiteenus selleks, et kliendid saaks kuvada galerii infot.

<?xml version="1.0" encoding="utf-8"?>
<galeriid>
  <galerii id="1" kategooria="Loomad">
    <pildid>      
      <pilt number="1" vaade="suur">
        <nimi>Lind</nimi>
        <kirjeldus>Ilus roheline lind</kirjeldus>
        <formaat>jpg</formaat>
        <suurus yhik="MB">2</suurus>
        <lisatud>
          <paev>01</paev>
          <kuu>03</kuu>
          <aasta>2012</aasta>
        </lisatud>
      </pilt>
      <pilt number="2" vaade="ikoon">
        <nimi>Lind</nimi>
        <kirjeldus>Ilus roheline lind</kirjeldus>
        <formaat>jpg</formaat>
        <suurus yhik="KB">200</suurus>
        <lisatud>
          <paev>01</paev>
          <kuu>03</kuu>
          <aasta>2012</aasta>
        </lisatud>
      </pilt>
      <pilt number="3" vaade="suur">
        <nimi>Koer</nimi>
        <kirjeldus>Minu koer</kirjeldus>
        <formaat>jpg</formaat>
        <suurus yhik="MB">3</suurus>
        <lisatud>
          <paev>02</paev>
          <kuu>03</kuu>
          <aasta>2012</aasta>
        </lisatud>
      </pilt>
      <pilt number="4" vaade="ikoon">
        <nimi>Koer</nimi>
        <kirjeldus>Minu koer</kirjeldus>
        <formaat>png</formaat>
        <suurus yhik="KB">230</suurus>
        <lisatud>
          <paev>02</paev>
          <kuu>03</kuu>
          <aasta>2012</aasta>
        </lisatud>
      </pilt>      
    </pildid>
  </galerii>
  <galerii id="2" kategooria="Linnad">
    <pildid>
      <pilt number="1" vaade="suur">
        <nimi>Tallinn</nimi>
        <kirjeldus>Tallinn kevadel</kirjeldus>
        <formaat>jpg</formaat>
        <suurus yhik="MB">2</suurus>
        <lisatud>
          <paev>08</paev>
          <kuu>03</kuu>
          <aasta>2012</aasta>
        </lisatud>
      </pilt>
      <pilt number="2" vaade="ikoon">
        <nimi>Tallinn</nimi>
        <kirjeldus>Tallinn kevadel</kirjeldus>
        <formaat>raw</formaat>
        <suurus yhik="KB">220</suurus>
        <lisatud>
          <paev>08</paev>
          <kuu>03</kuu>
          <aasta>2012</aasta>
        </lisatud>
      </pilt>
    </pildid>
  </galerii>
</galeriid>

XSL - stiilifailid

Stiilifail 1 - inimsõbralik vaade xml faili sisust

Antud stiilifail vormindab inimsõbralikul tabeli kujul ülaloleva XML'i

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
    <xsl:output method="html" indent="yes"/>
    <xsl:template match="/">
      <html>
        <head>
          <title>XML to HTML 1</title>
          <style>
            .theader { font-style:italic; text-decoration:underline; }
          </style>
        
        </head>
        <body>
          <H1>getPildid sõnumi sisu.</H1>
          <xsl:for-each select="/galeriid/galerii">
            <h3>
              <xsl:text>Galerii nr. </xsl:text>
              <xsl:value-of select="@id"/>
              <xsl:text> (</xsl:text>
              <xsl:value-of select="@kategooria"/>
              <xsl:text>)</xsl:text>
            </h3>
            <table>
              <tr class="theader">
                <td>pilt.number</td>
                <td>pilt.vaade</td>
                <td>nimi</td>
                <td>kirjeldus</td>
                <td>formaat</td>
                <td>suurus</td>
              </tr>
              <xsl:for-each select ="pildid/pilt">
                <tr>
                  <td>
                    <xsl:value-of select="@number"/>
                  </td>
                  <td>
                    <xsl:value-of select="@vaade"/>
                  </td>
                  <td>
                    <xsl:value-of select="nimi"/>
                  </td>
                  <td>
                    <xsl:value-of select="kirjeldus"/>
                  </td>
                  <td>
                    <xsl:value-of select="formaat"/>
                  </td>
                  <td>
                    <xsl:value-of select="suurus"/>
                    <xsl:value-of select="suurus/@yhik"/>
                  </td>
                </tr>
              </xsl:for-each>
            </table>
          </xsl:for-each>
        </body>
      </html>

    </xsl:template>
</xsl:stylesheet>

Stiilifail 2 - galerii vaade (ikoonid)

Antud stiilifail vormindab XML'i galeriilaadseks HTML'iks

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
  <xsl:output method="html" indent="yes"/>
  <xsl:template match="/">
    <!-- http://www.w3schools.com/css/css_image_gallery.asp -->
    <html>
      <head>
        <title>XML to HTML - Gallery</title>
        <style>
          div.img
          {
          margin: 2px;
          border: 1px solid #0000ff;
          height: auto;
          width: auto;
          float: left;
          text-align: center;
          }
          div.img img
          {
          display: inline;
          margin: 3px;
          border: 1px solid #ffffff;
          }
          div.img a:hover img {border: 1px solid #0000ff;}
          div.desc
          {
          text-align: center;
          font-weight: normal;
          width: 120px;
          margin: 2px;
          }
        </style>

      </head>
      <body>
        <xsl:for-each select="/galeriid/galerii">
            <xsl:for-each select ="pildid/pilt">
              <xsl:if test="@vaade='ikoon'">
                <div class="img">
                  <a target="_blank" href="#">
                    <img 
                        src="http://fc09.deviantart.net/fs6/i/2005/039/d/c/Not_Available_Icon_by_blacxthornE.jpg" 
                        width="110" 
                        height="90"/>
                  
                   </a>
                  <div class="desc">
                    <xsl:value-of select="kirjeldus"/>
                  </div>
                </div>
              </xsl:if>
            </xsl:for-each>
        </xsl:for-each>
      </body>
    </html>

  </xsl:template>
</xsl:stylesheet>

Stiilifail 3 - thumbnails xml

Antud stiilifail vormindab xml'i ringi selliselt, et kuvab masinsõbralikul kujul xml'i.

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
    <xsl:output method="xml" indent="yes"/>
    <xsl:template match="/">
      <thumbnails>
      
          <xsl:for-each select="/galeriid/galerii">

              <xsl:for-each select ="pildid/pilt">
                <xsl:if test="@vaade='ikoon'">
                  <thumb>
                    <xsl:attribute name="number">
                      <xsl:value-of select="@number"/>
                    </xsl:attribute>
                    <nimi>
                      <xsl:value-of select="nimi"/>
                    </nimi>
                    <kirjeldus>
                      <xsl:value-of select="kirjeldus"/>
                    </kirjeldus>
                    <url>
                      <xsl:text>http://pildiportaal.mingidomeen.ee/getThumb.aspx?id=</xsl:text>
                      <xsl:value-of select="@number"/>
                    </url>
                    <lisatud>
                      <xsl:value-of select="lisatud/aasta"/>
                      <xsl:text>-</xsl:text>
                      <xsl:value-of select="lisatud/kuu"/>
                      <xsl:text>-</xsl:text>
                      <xsl:value-of select="lisatud/paev"/>
                    </lisatud>
                  </thumb>
                  
                </xsl:if>
              </xsl:for-each>
          </xsl:for-each>

      </thumbnails>
    </xsl:template>
</xsl:stylesheet>

Skeemifail

Antud skeemifail mõeldud ülalova ning sellelaadse xml faili valideerimiseks

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:simpleType name="yhikuTyyp">
    <xs:restriction base="xs:string">
      <xs:enumeration value="KB"/>
      <xs:enumeration value="MB"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="vaateTyyp">
    <xs:restriction base="xs:string">
      <xs:enumeration value="ikoon"/>
      <xs:enumeration value="suur"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="kategooriaTyyp">
    <xs:restriction base="xs:string">
      <xs:pattern value="[A-Z][a-z]+"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="galeriid">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="galerii">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="pildid">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element minOccurs="0" maxOccurs="200" name="pilt">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="nimi" type="xs:string" />
                          <xs:element name="kirjeldus" type="xs:string" />
                          <xs:element name="formaat" type="xs:string" />
                          <xs:element name="suurus">
                            <xs:complexType>
                              <xs:simpleContent>
                                <xs:extension base="xs:unsignedInt">
                                  <xs:attribute name="yhik" type="yhikuTyyp" use="required" />
                                </xs:extension>
                              </xs:simpleContent>
                            </xs:complexType>
                          </xs:element>
                          <xs:element name="lisatud">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element name="paev" type="xs:unsignedByte"/>
                                <xs:element name="kuu" type="xs:unsignedByte"/>
                                <xs:element name="aasta" type="xs:unsignedShort"/>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                        <xs:attribute name="number" type="xs:unsignedInt" use="required" />
                        <xs:attribute name="vaade" type="vaateTyyp" use="required" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="id" type="xs:unsignedInt" use="required" />
            <xs:attribute name="kategooria" type="kategooriaTyyp" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Retsensioonid

XML

Kodutööna on loodud xml fail pildiportaali veebiteenuse välja andmiseks. Pildiportaal on mõeldud klientidele galerii info kuvamiseks. Xml failis on 6 loogilist dimensiooni ning kolmel neist on kasutatud atribuute, mis on enamat kui lihtsalt id. Lisaks on loodud ka xsd vormingus skeemifail xml faili valideerimiseks. Xml failile on loodud ka 3 xslt stiilifaili: esimene neist annab välja html vormingus tabeli – tabelis on toodud iga pildi number, vaade, nimi, kirjeldus, vormingu ning suuruse andmed. Lisaks on pildid tabelitesse jaotatud kategooriate järgi ning galeriid on ka nummerdatud; teise stiilifaili eesmärk on algse xml faili andmetest vormindada galeriilaadne html, mida see stiilifail ka teeb; kolmas stiilifail vormindab algse xml-i ringi selliselt, et kuvab masinsõbralikul kujul xml'i pildi nime, kirjelduse, url aadressi ning lisamise kuupäeva andmetega. Kodutöö vastab seega täielikult esitatud tingimustele.

Kood otseselt kommenteeritud ei ole, aga see-eest on iga faili üldotstarve välja toodud meeskonna wiki lehel iga konkreetse faili juures. Samuti on kood loetav ja arusaadav.

Dokumentatsiooni ei ole antud ülesande lahendusele lisatud, aga see ei olnud ka nõutud kodutöö ülesande püstituses. Seega ei saa seda lugeda tehtud töö puuduseks hindamise mõttes. Samas, kui see ülesanne on loogiline osa ülejäänud kursuse kodutööde komplektist, siis juba praegu dokumentatsiooniga alustamine, oleks hea tava järgimine.

Puudustena tooks ehk välja, et pildi juures ei ole pildi lisaja või tegija andmeid. Tänases päevas on igasugused autoriõigused väga kuum teema.

Meeskond Leemur


XML retsensioon

Esitatud xml’i peaks genereerima Pildiportaali veebiteenus. XML vastab igati kodutöö nõuetes kirjeldatud tingimustele: xml sisaldab kuus loogilist dimensiooni ja kasutatud on piisavalt atribuute. Sisu on igati loogiline, ehk oleks võinud ainult lisada veel ühe dimensiooni ja viia eraldi gruppidesse nö „ikoonid“ ja „suured“ pildid aga eks see on ka suuresti maitse asi.

Esimene xslt fail andis tulemuseks html kujul ilusa tabeli galeriides olevatest piltidest, näha on, et autorid olid sellega ka vaeva näinud ja kenasti tulemuse ära formaatinud. Teine xslt annab juba html kujul galeriivaate ikoonidest, mis on ka valmisolekuga lisada sinna link suuremale pildile (hetkel veel puudub aga pole ka selle ülesande skoobi mõttes oluline). Kolmas xslt moodustab algsest xml-st uue spetsiifilisema xml faili. Teeb seda päris kenasti, aga url-i leidmisel tekib väike viga. Nimelt ei ole seal arvestatud mitme galerii olemasoluga, kus id-sid alustatakse ühest alates. See on tekitanud selle, et url kahe erineva galerii piltidele sama id-ga on sisult identsed. Antud ülesande mõttes seda veaks ei loeks, kuna tehniliselt kõik toimib aga kui hilisemas faasis ka seda kasutada saab, siis peaks natuke xslt skripti täiendama.

Kokkuvõtteks võib öelda, et meeskond TeravC XML kodutöö vastab kõigile esitatud nõuetele ja on hästi teostatud. Kõik esitatud failid ka valideerusid.

Meeskond Hops


XML-i retsensioon

Koduse ülesande täitmiseks tuli luua XML fail andmete edastamiseks, selle XML faili skeemifail ning 2-3 sobivat XSL faili loodud XML failis olevate andmete transformeerimiseks HTML formaati ja XML faili formaadi muutmiseks. XML andmefaili sisu oli vabalt valitav, kuid andmed pidid olema üksteisega loogiliselt seotud ja struktuur otstarbekas. XML failil pidi kindlasti olema vähemalt neli loogilist dimensiooni. Ning lisaks tuli kasutada kolmel dimensioonil attribuute, mis on enamat, kui lihtsalt ID. Meeskonnal Terav C on loodud kõigile tingimustele vastav XML fail - selles failis on 6 loogilist dimensiooni ja kolmel neist on atribuutidena kasutatud rohkemat kui ainult ID väärtust; veelgi enam - on loodud ka XSD vormingus skeemifail, et oleks võimalik ka valideerida XML faili. Peale XML faili ja XSD faili on loodud ka kolm XSLT faili (stiilifaili), mis täidavad eraldi ülesandeid:

  • üks neist väljastab HTML formaadis tabeli - pole üllatav leida sellest tabelist iga pildi kohta käiv number, selle pildi vaade, pildi nimi ja ka otseloomulikult kirjeldus aga lisaks sellele ka selle pildi vormingu ning ka suuruse kohta käivad andmed.
  • teine stiilifail täidab väga edukalt oma ülesannet - genereerib HTML-i galerii .
  • kolmas aga suudab kuvada arvutile arusaadaval kujul XML pildi nime, selle kirjeldusega, url aadressiga ning otseloomulikult ka lisamise kuupäeva andmetega.

Vaadates püstitatud ülesannet, siis on meeskond Terav C suurepäraselt selle ka täitnud.

Meeskond “Seekord 3 liiget”


Ülesanne 2 - Veebiteenus

Tähtaeg 20.05.2013

Web API lahendus 2013-05-20

Testiabi

Pildi loomine
  • Uue pildi tekitamiseks tuleb laadida pilt ülesse. Selleks kasuta Upload Controllerit (~/Upload). Kasutaja ja parooli saab spikerdada PictureDAL -> Migrations -> Configurations.cs.
  • ImageUpload api-controller annab tagasi Image tüüpi objekti, mida siis saab sisse süüa, vajaduse täiendada, ning PUT käsuga uuendada serveris (Kasutades nüüd juba Image api-controllerit)
Uue objekti loomine

Näiteks uue kommentaari lisamiseks kasuta alljärgnevat päringud fiddleris:

 POST http://localhost:55878/api/imagecomment HTTP/1.1
 Host: localhost:55878
 User-Agent: Fiddler
 Content-Type: text/json
 Accept: text/json
 Authorization: Basic YWRtaW46c2VjcmV0


 {
   "ImageID": 1,
   "Comment": "Comment 2, hinne 6",
   "Rating": 6,
 }

Audentimisest

Kasutame basic-audentimist, kuna lihtne realiseerida, samas üle SSL'i lahendus on täiesti akstepteeritava turva tasemega. Lahenduse võtsime kasutades näidist veebis, kus on ära toodud ka antud lahenduse plussid ja miinused. Parooli räsi hoiame andmebaasis. Räsi genereerimiseks kasutasime veebis asuvat moodulit.

Veebiteenuse retsensioon meeskonna Leemur poolt

1. töö vastavus esitatud tingimustele

Töö täielikult esitatud tingimustele ei vasta, kuna kolmest alamülesandest on realiseeritud kaks esimest (teenuse pakkumine ning teenuse kasutajate tuvastamine ja haldamine). Teenuse kasutajate ja kasutusstatistika üle arve pidamist kasutajate lõikes ei ole töös realiseeritud. Ka kasutajate haldust ei ole väga põhjalikult realiseeritud. Samas see, mis on tehtud teenuse enda osas, on tehtud põhjalikult ja hästi. Teenuse osa Loodud on kontrollerid:

a. Home – kuvab esilehe

b. Upload – kuvab pildi üleslaadimise lehe

Pildi üleslaadimine aadressilt ~/Upload töötab. http://localhost:55878/Upload - autentisin anonymous kontoga. Muidugi võiks mainida, et lehel ei ole järjekindlust valitud keele rakendamiseks (üksik ’Lehitse’ nupp eesti keeles). Tulemuseks tagastatakse image objekt.

Pärast pildi üles laadimist, saab neid vaadata aadressilt http://localhost:55878/api/OriginalImage/{id}.

c. OriginalImage - annab tagasi originaalfaili, kui kasutaja on autoriseeritud

Realiseeritud on GET meetod, mis täiesti töötab http://localhost:55878/api/OriginalImage/{id}

d. ImageUpload – selle kontrolleri mõttest ei saa väga aru. Oleks eeldanud, et see suunab mind ~/Upload lehele. Aadressile ~/ImageUpload minnes sain vastuseks:

 {
 "$id": "1",
 "Message": "The requested resource does not support http method 'GET'."
 }

e. Thumb - leiab thumbnailsi pildile vastavalt ette antud tüübile small, medium, large ja pildi id'le

Realiseeritud on GET meetod, mis töötab ja tagastab pildi valitud suurusele:

http://localhost:55878/api/Thumb?id=1&type=small http://localhost:55878/api/Thumb?id=1&type=medium http://localhost:55878/api/Thumb?id=1&type=large

f. Image – tagastab image objekti, mis seotud kasutajaga

Realiseeritud on GET, PUT ja DELETE meetod. POST meetod suunab upload lehele. GetBy id meetodi miinuseks ütleks, et kui sisestada aadressi http://localhost:55878/api/image/{id} id selline väärtus, mida ei eksisteeri, siis ilmub tühi leht. Võiks olla mingi informatiivne tekst.

g. ImageComment - väljastab kõik kasutaja tehtud kommentaarid.

Realiseeritud on GET, POST, DELETE ja PUT meetod, mis tagastab MethodNotAllowed teate. Ning DELETE meetod on lubatud ainult administraatorile. Praegu on küll kontroll nii tehtud, et kasutaja nimi peab konkreetselt just „admin“ olema. Ehk tulevikus saavad näiteks kõik kasutajad, kes kuuluvad administrator õigustega kasutajate gruppi, kommentaare muuta.

h. ImageCategory – väljastab piltide kategooria loendi, stiilis:

 {
   "$id": "1",
   "Images": [],
   "ImageCategoryID": 1,
   "Name": "Uncategorized"
 },
 {
   "$id": "2",
   "Images": [],
   "ImageCategoryID": 2,
   "Name": "Loodus"
 }


GET meetod on kõigile nähtav. Samuti realiseeritud POST, PUT ja DELETE vaid admin kasutajale. Praegu on küll kontroll nii tehtud, et kasutaja nimi peab konkreetselt just „admin“ olema. Ehk tulevikus saavad näiteks kõik kasutajad, kes kuuluvad administrator õigustega kasutajate gruppi, kategooriaid muuta.

i. User – tagastab kasutajate loendi, stiilis

 {
   "$id": "1",
   "UserID": "admin",
   "Password": "1000:Lk6Jg3A+pcP4FRwfVO3VcUKESqyH19R7:I2j8NTisCxPn4/e0YL3zdr/9/xXfhGKk"
 },
 {
   "$id": "2",
   "UserID": "aleksandr",
   "Password": "1000:FdJ5RNgQIvykcblEWaD576NbI6/ih/uf:ltScbkbx1bo1O0Ag94WjSEOikgJ2P0Sc"
 
 }

Realiseeritud on GET ja POST meetodid. Iseasi, kas iga kasutaja peaks saama vaadata juba loodud kasutajate kontode andmeid. Ehk peaks ka siia panema administraatori õiguste kontrolli.

Kasutajate autentimise ja halduse osa

Kasutatud on basic autentimist, kuna lihtne realiseerida, samas üle SSL'i lahendus on täiesti akstepteeritava turva tasemega. Parooli räsi hoitakse andmebaasis.

Kasutajate halduse poolelt on ainukestena realiseeritud User kontroller GET ja POST meetoditega. Ülesande püstituses soovitatut (luua teenus (FE) ja teenuse seadistamiseks ning kasutajate haldamiseks mõeldud rakendus (BE)) järgitud ei ole. Samas oli see ainult soovitus, mitte nõue.

2. programmikoodi loetavus ning kommenteeritus

Koodi ei ole ülemäära palju kommenteeritud, ent olemasolevad kommentaarid on piisavad, et toimuvast aru saada. Testimiseks ja retsenseerimiseks täiesti piisavad. Kood on loetav ja arusaadav.

3. dokumentatsiooni olemasolu

Eraldi dokumentatsiooni veebiteenusele lisatud ei ole. Samas ei ole see ka kusagil eraldi nõutud, seega otseselt miinuseks lugeda ei saa.

4. kirjeldada puudusi

Teenuse kasutajate ja kasutusstatistika üle arve pidamist ei toimu. Ka kasutajate halduse pool on ilmselt kiirustades realiseeritud. Põhjuseks tõenäoliselt piiratud ajaressurss. Administraatori õigustega toimingute kontroll on kindlasti vaja ümber teha ja täiendada.


Veebiteenuse retsensioon

Tsiteerides õppejõu poolt püstitatud ülesannet: Loodav veebiteenus peab võimaldama kolme põhilist teenust - esiteks kindlasti teenuse pakkumist; teiseks teenuse kasutajate tuvastamist ja haldamist; ning lõpuks ka kolmandaks teenuse kasutajate ja kasutusstatistika üle arve pidamist just kasutajate lõikes. Lisaks soovitab härra õppejõud luua eraldi teenus ja teenuse seadistamiseks ning kasutajate haldamiseks mõeldud rakendus. Nüüd vaadates antud meeskonna tööd, siis arvame, et kõige lihtsam ja praktilisem oleks arvatavasti kommentaarid jagada mitmesse ossa - täpsemini nelja:

  • Kas töö vastab esitatud ülesandele ja selle tingimustele?
  • Kas esitatud kood (programmikood) on ikka arusaadavalt ja põhiline just lihtsalt loetav ning otseloomulikult ka kommenteeritud?
  • Kas esitatud tööl on kaasas ka alati vajalik ning hinnatud dokumentatsioon?
  • Ning lõpuks oleme piisavalt nahaalsed ning võtame õiguse kirjeldada antud töö puudusi - muidugi seda vaid juhul kui neid peaks meie arvates leiduma.

Alustame siis esimesest punktist - kas antud töö vastab esitatud tingimustele? Esiteks tuleb kindlasti välja tuua see, et nende töö teenuse osa on teostatud suurepäraselt. Peaaegu on andestatav suur möödalask, et nende tööl puudub üks ülesande põhilistest osadest - teenuse kasutajate ja nende kasutusstatistika arvepidamine. Seega vähemalt kolmandik tööst on teostamata jäänud. Jätkame teise punktiga - programmikoodi loetavus ja kommenteeritus. Paraku tuleb tõdeda, et ülemäära vaeva pole kommentaaridega nähtud. Kuigi samas nendest kommentaaridest piisab täiesti, et vajalikul määral funktsionaalsusest aru saada ning ühtlasi seda ka mõista. Oleme jõudnud kolmanda punktini - kas ja kus on olemas antud koodi dokumentatsioon? Vastus lühike ja arusaadav - dokumentatsiooni ei ole! Noh, võiks ju norida ja küsida milles asi, miks pole dokumenteeritud ühtegi liigutust? Aga samas - ei ole ju tegeelikult lähteülesandes ka nõutud programmi dokumenteerimist. Kuigi, oleks ju tore olnud. Neljas aga mitte vähem tähtsam punkt eelmistest - puudused antud töös. Suuri puudusi on kaks. Esmajärjekorras muidugi juba eelnevalt kirjeldatud puuduv teenuste kasutajate ja kasutusstatistika arvestus. Oleks ka see osa teostatud korrektselt, võiks töö tulemust hinnata väga heaks.

Meeskond “Seekord 3 liiget”


Ülesanne 3 - Klient

Tähtaeg 10.06.2013

Windows phone 8 rakendus

PictureSolution_2013-06-10.zip

  • kasutatud ainult avalikke api teenuste komponente
  • CRUD operatsioonidest ainult R.

Testimise juhend

Eeldused:

  • Visual studio 2012
  • Windows Phone 8 SDK

Seadistamine, et töötaks kõik kohalikust arvutist.

  • Vaata oma arvuti IP-aadress (cmd ja ipconfig)
  • Ava IIS-Express seadistusfail %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
  • Määra saidi binding aadressiks localhost asemel oma arvuti IP-aadress. Juhul kui seda ei ole, käivita korra projekt.
             <site name="PictureWebAPI" id="10">
               <application path="/" applicationPool="Clr4IntegratedAppPool">
                   <virtualDirectory path="/" physicalPath="C:\DEV\PildiportaalWebAPI\PictureSolution\PictureWebAPI" />
               </application>
               <bindings>
                   <binding protocol="http" bindingInformation="*:55878:192.168.2.100" />
               </bindings>
  • Ava Projekti PictureWebAPI Seadistused (parem klõps ja properties)
  • Määra "Project Url" väärtuseks: http://[IP-aadress]:55878/, näiteks "http://192.168.2.100:55878/"
  • Määra WP8PicturePanorama projektis asuvas App.xaml.cs klassis parameetri APIBaseURL väärtuseks "http://[IP-aadress]:55878/"
  • käivita käsurida admin õigustega, käsurealt: C:\Program Files\IIS Express>iisexpress.exe /site:"PictureWebAPI"
  • Käivita WP8PicturePanorama projekt.
  • Vajadusel ava tulemüüri port 55878


Klientrakenduse retsensioon meeskonna Leemur poolt

1. töö vastavus esitatud tingimustele

Töö vastab igati esitatud tingimustele, kasutatud on antud hetkel suhteliselt uut Windows Phone 8 tehnoloogiat. See tekitas aga retsensiooni kirjutamise hetkeks probleemi, kuna Windows Phone 8 SDK nõuab, et arvutisse oleks paigaldatud ka Windows8, et ta üldse tööle läheks. Selles suhtes oleks olnud kindlasti lihtsam, kui kasutatud oleks mõnda "vana" tehnoloogiat. Samas on uue ja läbiproovimata valdkonna kallal katsetamine asi, mis lisab kindlasti plusspunkte projketi tegijatele.

Rakendus kasutab andmete vahetuseks JSON-it, mis on arvestades rakenduse iseloomu mõistlik.

CRUD meetoditest on lahendatud ainult andmete lugemise operatsioon, põhimõtteliselt töötab see ilusasti. Samas oleks huvitav ju katsetada ka teisi operatsioone, näiteks kustutamist või andmete muutmist. Tõsi, piltide lisamisega oleks emulaatoris vist üsna keerukas, sest emulaator otseselt ju kaamerat ei oma.

2. programmikoodi loetavus ning kommenteeritus

Töö on väga süsteemselt üles ehitatud, kood on selge ja hästi jälgitav. Kõik klientrakenduse osad on mõistlikult kaustadesse ja projektidesse ära jagatud.

3. dokumentatsiooni olemasolu

Kood on kommenteeritud piisavalt, võiks öelda isegi, et väga hästi. Lisatud on viiteid kasutatud koodijuppidele ja kasutatud põhimõtetele. Ülemäära palju kommentaare ka ei ole, kuid kuna kood on piisavalt hästi loetav. Ka wiki on varustatud testimiseks väga hea õpetusega - sellise kasutusjuhendiga võiksid olla kirjeldatud kõik õppeprojektid, mis IT Kolledžis esitatakse, et testijad ei peaks ülemäära palju aega raiskama selle peale, et mis viga on, et kood tööle ei lähe.

4. kirjeldada puudusi

Ülalpool sai kirjeldatud juba puudusena, et huvitav oleks proovida ka teisi operatsioone, nagu andmete muutmine ja kustutamine.

Mõnel pool on näha üleliigset koodi. Lõpp-produktist võiks selle ära koristada.