Terav C - Võrgurakendused 2 - projektileht: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Line 386: Line 386:
Tähtaeg 20.05.2013
Tähtaeg 20.05.2013


=== plaanitav funktsionaalsus ===
=== Web API lahendus 2013-05-20 ===
  - teha teenus, mis väljastab viimati lisatud pildid
Esmalt vabandan k6igi retsenseerijate ees - ei j6udnud v2ga testida.
  - teha teenus, mis väljastab top-rated pildid
  - teha teenus, mis väljastab pildi kategooriad
  - teha teenus, mis väljastab valitud kategooria pildid
  - teha teenus, mis väljastab kasutaja kõik pildid
  - teha teenus, mis laeb üles pildi serverisse
  - teha teenus, mis kustutab valitud pildi
  - teha teenus, mis muudab valitud pildi andmeid


=== Tasks ===
==== Testiabi ====
  - Versioonihaldus ülesse seada (OK - Oliver)
===== Pildi loomine =====
  - Domeeni mudel valmis teha (Sh. annotations) (OK - Oliver)
Uue pildi tekitamiseks tuleb laadida pilt ylesse. Selleks kasuta Upload Controllerit (~/Upload). Kasutaja ja parooli saab spikerdada PictureDAL -> Migrations -> Configurations.cs.
  - EF raamistik paika (OK - Oliver)
  - Luua standard Repod iga objekti klassi kohta (I{KlassiNimi}Repository + {KlassiNimi}Repository)
    - Image
    - ImageCategory
    - ImageComment
    - ImageRating
    - ThumbNail
    - ThumbType (stubs)
  - Funktsionaalsuse teostus (Controllers) (Get + Post + Put + Delete)
    - Image
    - ImageCategory
    - ImageComment
    - ImageRating
    - ThumbNail


   - Audentimine, Autoriseerimine
===== Uue objekti loomine =====
N2iteks uue kommentaari lisamiseks kasuta allj2rgnevat p2ringud fiddleris:
   POST  http://localhost:55878/api/ImageComment/  HTTP/1.1
  Host: localhost:55878
  Content-Type: application/json; charset=utf-8
  Authorization: Basic YW5kcmU6YW5kcmUxMjM=
 
 
  {
    "ImageID": 1,
    "Comment": "Test kommentaar 456",
    "AddedDate": "2013-05-20T00:00:00",
    "Rating": 9
  }


== Ülesanne 3 - Klient ==
== Ülesanne 3 - Klient ==
Tähtaeg 10.06.2013
Tähtaeg 10.06.2013

Revision as of 21:53, 20 May 2013

Ü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


Ülesanne 2 - Veebiteenus

Tähtaeg 20.05.2013

Web API lahendus 2013-05-20

Esmalt vabandan k6igi retsenseerijate ees - ei j6udnud v2ga testida.

Testiabi

Pildi loomine

Uue pildi tekitamiseks tuleb laadida pilt ylesse. Selleks kasuta Upload Controllerit (~/Upload). Kasutaja ja parooli saab spikerdada PictureDAL -> Migrations -> Configurations.cs.

Uue objekti loomine

N2iteks uue kommentaari lisamiseks kasuta allj2rgnevat p2ringud fiddleris:

 POST   http://localhost:55878/api/ImageComment/   HTTP/1.1
 Host: localhost:55878
 Content-Type: application/json; charset=utf-8
 Authorization: Basic YW5kcmU6YW5kcmUxMjM=


 {
   "ImageID": 1,
   "Comment": "Test kommentaar 456",
   "AddedDate": "2013-05-20T00:00:00",
   "Rating": 9
 }

Ülesanne 3 - Klient

Tähtaeg 10.06.2013