wiki:voterage

Version 4 (modified by joutapik, 6 years ago) (diff)

--

Harjoitustyöehdotus Web-sovellukset kurssia varten.

HVSC on kokoelma C64 SID-piirille luotuja ohjelmallisesti toistettavia musiikkikappaleita. Kokoelmaan on tarjolla erilaisia natiiveja selaus- ja toistinsovelluksia, mutta nyt olis ideana tehdä uudenlainen.

Käyttöliittymässä on tarkoitus käsitellä HVSC kappaleita joukkoina, jotka käyttäjä voi lajitella omiin soittolistoihinsa tai joihin käyttäjä voi määrittää musiikkityylimäärityksiä yms. relevanttia tietoa.

Tämä sovellus olis tarkoitus tehdä suurinpiirtein seuraavia palikoita käyttäen:

Palvelin Redhat Linux, Fedora Virtuaalipalvelin Apache Python Django

Tietokanta Postgres/Sqlite3 HVSC-kokoelma jossain muodossa tai linkin takaa. Sidinfo(Cadaver/CovertBitops?)

WebGui? HTML CSS Javascript Bootstrap.js, mahdollisesti muita. Tiny'R'sid(Juergen Wothke) tai itsetehty resid-fp(emscripten käännettynä, eli c-kielisestä koodista javascriptiksi käännetty toistin.)(web-audio-api) Tuki web-audiolle on Firefox/Chrome? selaimilla.(Toimii ainakin Windows/Android? alustoilla)

Toimintalogiikka: Tietokantaan koostetaan aluksi HVSC kokoelman kutakin .sid tiedostoa koskevat metatiedot. Tämän jälkeen luodaan group-käsite taulu, toisin sanoen nested-sets tyyppinen puu-malli. Kustakin uniikista metatiedosta luodaan puun noodi. Alkutilanteessa ryhmittely tehdään HVSC-tiedostojärjestelmän hakemistorakenteen mukaisesti, jolloin puu on kuin hakemisto. Kukin noodi voi kuulua jonkin toisen noodin lapseksi. Näin esimerkiksi voidaan lajitella .sid kappaleet tekijän, ryhmän, tekijänoikeuksien omistajan, tyypin jne. mukaisesti ilman, että metatietotaulua laajennetaan. Jos halutaan luoda esimerkiksi uusi musiikkilaji Tango, riittää luoda yksi Tango noodi, jolle sitten luodaan viitteet sellaisiin ilmentymiin, jotka joukkoon kuuluvat. Tällä tavalla käyttäjät voivat teoriassa luoda omia joukkojaan.

Käyttöliittymän logiikka: Käyttäjä voi selata tietoja, mutta vain kirjautunut käyttäjä voi niitä muuttaa.

Käyttäjälle esitetään aluksi pääjoukkoa kuvaava nappula, sitä klikkaamalla käyttäjälle palautetaan sellaiset joukot, jotka ovat pääjoukon välittömiä lapsijoukkoja. Käyttäjä voi valita jonkin lapsijoukosta, jolloin siihen välittömästi kuuluvat joukokt palautetaan. Näin navigoidaan, kunnes päädytään valitsemaan itse kappale. esim. (c64music) click c64music (demos)(games)(musicians) click musicians (0-9)(A)(B)... click (A) (Anvil)(AMJ) click (AMJ) (Buzzer.sid) click Buzzer.sid -> suorittaa määritellyn toiminnon kappaleelle. Esim. toistaa sen, siirtää soittolistaan. Voidaan liittää erilaisia gestureita eri toimintoja varten jne.

Edellä kuvatulla tavalla navigoiden käyttäjä voi joko valita kappaleita toistettavaksi, lisättäväksi soittolistaan, arvostella kappaleen tai määritellä genren kappaleelle.

Responsiivisyys/monella laitteella toimiminen toteutetaan käytännössä tutkimalla HTTP requestin metatiedoista selaavan laitteen/sovelluksen tiedot ja palauttamalla sille sopiva sisältö. Tähän on sellaisia valmiita javascript kirjastoja, kuten bootstrap, että yksinkertaisinta on käyttää niitä HTML/CSS:n jatkeena ja täydentää siltä osin kuin niistä puhti loppuu.

Seuraavan kerran loggautuessaan sisään näkee käyttäjä kokoelman pääjoukon lisäksi omat kokoelmansa/soittolistansa.

Aikatauluarvio:


Ajankäyttö jakaantuu seuraavien osien kesken about:

  • Tietokannan/group-mallin luonti ja tietokannan populointiskriptien teko
  • Käyttöliittymälogiikan ja ryhmien navigointilogiikan rakentaminen Djangon view/form/model/template käyttäen.
  • Valmiin toistimen pulttaus, ei vie kauan.
  • Oman toistimen kääntäminen C-koodista javascriptiksi, sovittaminen vie kauan, ei arviota.