Olen tehnyt yliopiston tietokantaohjelmoinnin harjoitustyönä järjestelmää, jossa voi harjoitella säännöllisiä lausekkeita. Järjestelmään kuuluu eritasoisia tehtäviä: helpoimmat osaa ratkaista kuka tahansa säännöllisiin lausekkeisiin tutustunut, vaikeimmat lähestyvät tasoltaan uusinta putkapostitehtävää.
Järjestelmää voi tällä hetkellä käyttää osoitteessa:
http://db.cs.helsinki.fi/tomcat/ahslaaks/sl/
Järjestelmä on viimeistelyä vaille valmis, ja sitä saa mielellään kokeilla. Palautetta voi lähettää tähän keskusteluun tai minulle sähköpostilla (antti.laaksonen@mbnet.fi). Myös ehdotuksia uusiksi tehtäviksi kannattaa lähettää.
Ihan hauskoja tehtäviä. Sivuilla näyttää tosin olevan pari typoa, input-tageja ei ole suljettu:
<input type="hidden" name="tehtava" value="11" <input type="hidden" name="otsikko" value="Viikonpäivät"
Millä sivulla tuollaista näkyy?
Tehtäväsivun lähdekoodissa pitäisi lukea näin:
<input type="hidden" name="tehtava" value="11" ><input type="hidden" name="otsikko" value="Viikonpäivät" ></form>
Aika moni HTML-sivu sisältää virheitä. Esim. osoitteen http://validator.w3.org/check?verbose=1&uri=http://www.ohjelmointiputka.net/keskustelu/
Hmm. Nyt niitä virheitä ei ole enää yhtään.
Hyvältähän tuo vaikuttaa. Tosin käytettävyydestä voisin vähän antaa sitä palautetta. Ensinnäkin mietityttää että miksi tuohon edes tarvitsee kirjautua? Okei, se voi olla osa harjoitusta.
Sitten itse harjoituksiin. Ensinnäkin kun harjoituksen ratkaisee, olisi hyvä jos olisi linkki suoraan seuraavaan harjoitukseen, tai ainakin pääsivulle. Lisäksi käyttäjä ei voi mitenkään tietää missä muodossa vastaus pitää antaa. [a-zA-Z]* vai käykö kenties /[a-z]*/i (nähtävästi vain ensimmäinen kelpaa).
No, eiköhän siinä tärkeimmät..
Kirjautuminen on tarpeen, koska ratkaistuista tehtävistä pidetään kirjaa, minkä pitäisi kannustaa harjoitteluun. Lisäksi järjestelmään voi kirjautua myös opettajana, jolloin voi seurata oppilaiden edistymistä.
Järjestelmässä saisi kieltämättä olla kunnon ohjeet, millaisia säännöllisiä lausekkeita pitää kirjoittaa. Säännölliset lausekkeet tarkistetaan Oraclen tietokannan keinoin, joten tuolta voi ensi hätään tutkia, mitä merkintöjä voi käyttää:
http://download.oracle.com/docs/cd/B19306_01/
Kun klikkaan Firefoxilla "View Page Source" tehtäväsivulla, niin siitä puuttuvat nuo >-merkit. Mutta kun nyt kokeilin "View Generated Source" niin siinä on ihan oikein, eli ei siinä taidakaan olla mitään ongelmaa.
JTS kirjoitti:
Ensinnäkin kun harjoituksen ratkaisee, olisi hyvä jos olisi linkki suoraan seuraavaan harjoitukseen, tai ainakin pääsivulle.
Tätä ajattelin itsekin ehdottaa, välttäisi turhaa klikkailua. Muuten ei tule mitään erityistä mieleen, toimii hyvin ja tehtävätkin ovat hyviä.
Olipa siinä HTML:ssä sittenkin virhe, oma selaimeni vain näytti lisäävän auliisti puuttuvat kulmasulut lähdekoodiin. Mutta nyt korjasin virheen.
Tosiaankin linkkejä eri paikkoihin saisi olla runsaammin, tähänkin tulee vielä parannus.
Tulipahan testattua ja hyvältä vaikuttaa. Tässä kuitenkin muutamia parannus- ja korjausehdotuksia:
1) Suurimmalla osalla tehtävistä ei ole kovinkaan paljoa yhteistä käytännön käyttötilanteiden kanssa vaan enimmäkseen ne ovat vain hankalempia tapoja tehdä asiat. Säännöllisten lausekkeiden opettelun ja hyötykäytön oppimisen kannalta voisi olla hyödyllistä lisätä käytännönläheisempiä tehtäviä, kuten ota koko tekstinpätkä muuttujaan tai etsi html-muotoiselta sivulta sivun otsikko title-elementtien välistä.
2) Myös merkkijonon tai merkkijonojen korvausta toisella voisi pistää mukaan. Esim. korvaa tekstistä kaikki vokaalit e-kirjaimella tai vaihda kahden ensimmäisen sanan ensimmäisten kirjainten paikat keskenään.
3) Syötteelle ei ilmeisesti lähetys- tai tulostusvaiheessa tehdä mitään tarkistuksia, joka voi aiheuttaa osan lausekkeesta katoamisen tai muuttumisen (ainakin jos syöte sisältää merkin <, joka aloittaa html-elementin). Esim <img src="https://www.ohjelmointiputka.net/img/putka.jpg">.
4) Ainakin tehtävän 1 (kokonaisluvut) tehtävänantoon kannattaisi tarkentaa, että -0 ei ole hyväksyttävä luku (kesti hetki tajuta, että miksi tuo nyt käsitellään väärin... :))
Sami kirjoitti:
Suurimmalla osalla tehtävistä ei ole kovinkaan paljoa yhteistä käytännön käyttötilanteiden kanssa vaan enimmäkseen ne ovat vain hankalempia tapoja tehdä asiat.
Ihan hyvä näkökohta. Täytyy tunnustaa, että minua säännöllisissä lausekkeissa kiinnostavat käytännön sovelluksia enemmän niiden teoreettiset mahdollisuudet. Kun tehtävät sattuvat olemaan minun laatimiani, tämä näkyy myös tehtävissä. Toisaalta jos nämä tehtävät sujuvat, osaa varmaan laatia myös arkisempia säännöllisiä lausekkeita.
Sami kirjoitti:
Syötteelle ei ilmeisesti lähetys- tai tulostusvaiheessa tehdä mitään tarkistuksia, joka voi aiheuttaa osan lausekkeesta katoamisen tai muuttumisen - -
Tosiaan järjestelmä hyväksyy minkä tahansa merkkijonon säännölliseksi lausekkeeksi, ja ongelmia voi tulla siinä vaiheessa, kun säännöllinen lauseke näytetään myöhemmin HTML-sivulla. Tähän asiaan tulee kuitenkin korjaus.
Sami kirjoitti:
Ainakin tehtävän 1 (kokonaisluvut) tehtävänantoon kannattaisi tarkentaa, että -0 ei ole hyväksyttävä luku - -
- - ja tehtävänantoa voisi ehkä muutenkin selkeyttää, koska järjestelmän tilastoista paljastuu, että aika moni on joutunut taistelemaan tämän tehtävän kanssa, vaikka tehtävän pitäisi olla tasoltaan helppo.
Samin kanssa samoilla linjoilla, jäin kaipaamaan enemmän käytännönläheisyyttä. Käyttöliittymään myös voisi vähän panostaa, tosin se nyt ei tuossa sivustossa ehkä oleellisinta ole. Muuten kuitenkin loistava idea.
Hämäävä otsikko, eihän tuolla mitään opi kun pitää jo valmiiksi osata :(
Aihe on jo aika vanha, joten et voi enää vastata siihen.