In GitLab by @Smibu on Jul 30, 2014, 03:34
Plugin lähdekoodin näyttämiseksi
Pluginin URL: http://tim-beta.it.jyu.fi/svn
Tämän pluginin tehtävä on näyttää vain valittu koodi valitusta kohtaa.
Käyttö esim:
~~~{#alkuluku plugin=showCode}
file:https://svn.cc.jyu.fi/srv/svn/ohj2/esimerkit/k2014/luennot/luento04/src/luento04/Alkuluku.java
start:int onko
end:/\*
endn:=-2
linefmt="{0:03d} "
~~~
Tuosta kun tehdään html-GET:
http://tim-beta.it.jyu.fi/svn/?file=https://svn.cc.jyu.fi/srv/svn/ohj2/esimerkit/k2014/luennot/luento04/src/luento04/Alkuluku.java&linefmt={0:03d}'Reference to deleted milestone 20'&start=int&end=/*&endn=-2
saadaan suoraan pala lähdekoodia, jossa on mahdolliset
rivinumerot mukana jos pyydetään:
027 public static int onkoAlkuluku(int luku) {
028 int jakaja = 2;
029 int kasvatus = 1;
030 if ( luku == 2 ) return 1; // 0
031
032 do {
033 int jakojaannos = luku % jakaja;
034 if (jakojaannos == 0) return jakaja; // 1
035 jakaja += kasvatus; // 2
036 kasvatus = 2; // 3
037
038 } while (jakaja < luku / 2);
039
040 return 1;
041 }
042
Kumpiko pistää
ympärille, vai laitetaanko tuokin parametriksi?
before:<pre>
after:</pre>
Checklist
Vesa Lappalainen
In GitLab by @Smibu on Jul 31, 2014, 17:30
In GitLab by @Smibu on Jul 28, 2014, 18:44
Ville Tirronen
In GitLab by @Smibu on Aug 5, 2014, 18:12
Kuinka kirjoitetaan Video-linkkejä?
Suoran upotuksen ongelman on se, että selain latailee kaikki nuo videot
kerralla ja dokumentti jossa on esim. 50 videolinkkiä menee käyttökelvottomaksi. Tätä varten on plugin:
``` {#V3 plugin="showVideo"}
stem: YouTube
iframe: true
start: 50
end: 55
width: 400
height: 300
file: //www.youtube.com/embed/RwmU0O7hXts
´´´
´´´
jolla voi laittaa videon "odottamaan", eli itse videolinkki (tässä tapauksessa
iframe) luodaan vasta kun pyydetään. Jos on suora linkki videoon, niin voi käyttää ilman iframea.
## Tehtävät
* [x] Ulkoasu ertyisesti linkin klikkaamiseksi
*Vesa Lappalainen*
In GitLab by @Smibu on Jul 28, 2014, 18:39
Ville Tirronen
In GitLab by @Smibu on Aug 1, 2014, 13:54
Prototyyppi monivalintapluginista
Tila
Testattu ilman TIMiä, siistimättä.
Gitissä: timApp/modules/Choices/
Tiedostot
Olennaiset kooditiedostot
ChoicesPlugin.hs
-- Varsinainen plugin. Tämä tiedosto kääntyy plugin-web-palvelimeksi.
PluginType.hs
-- Pluginrajapinta. Tämä hoitaa web-palvelun muodostamisen ja eri pyyntöjen serialisoimisen sekä kommunikaation.
HTMLRequest.hs
-- Tietotyyppi /html
reitin pyyntöjä varten.
AnswerRequest.hs
-- Tietotyyppi /answer
reitin pyyntöjä varten.
UtilityPrelude.hs
-- Lista moduleja, jotka importataan käytännössä aina. Ei tarvitse jokaista tiedostoa liata niillä.
MCQTemplate.html
-- Angularin html-template tiedosto monivalintatehtävää varten
script2.js
-- Monivalintatehtävän asiakaslogiikka. Toteuttaa angular modulin mcq
, joka pitää löytyä siis sivun dependensseistä.
Ks. Myös projektin readme.
Markup
Näyttää tältä. Plugineja on itseasiassa kaksi "mcq" ja "mmcq". Molemmissa voi olla monta oikeaa vaihtoehtoa, mutta mmcq:ssa niistä voi valita useamman.
~~~~~ {plugin="mmcq"}
stem: |
Which expressions below mean the same as `2^3^4`, (remember that `infixr 8 ^`)?
choices:
- text: "`(2^3)^4`"
reason: This is the same as `8^4` while `2^3^4` is same as `2^81`
correct: false
- text: "`2^(3^4)`"
reason: since (`^`) is right associative
correct: true
- text: "`2(^3^4)`"
reason: This is just nonsense.
correct: false
- text: "`(2^3^4)`"
reason: Adding extra parentheses doesn't matter.
correct: true
- text: "`(2^(3^4))`"
reason: Adding extra parentheses doesn't matter.
correct: true
~~~~~
Testaus
Plugin on yritetty koota siten, että sitä voi testata ilman TIM:iä. Sen pitäisi onnistua näin:
> cabal sandbox init # Käännetään sandboxissa
> cabal install --only-dependencies
> cabal build
> cabal exec ghci ChoicesPlugin.hs
>> experiment simpleMultipleChoice testQ 8080
Ja sitten selaimella porttiin 8080 localhostissa.
Puutteet
- Nykyisellään samaan tehtävään voi vastata aina useasti, mikä periaatteessa kai pitäisi voida kieltää.
-> TIM
Ville Tirronen
In GitLab by @Smibu on Aug 5, 2014, 13:30
- Kirjaimia a-z
- Numeroita 0-9
- Piste (.) ja alaviiva (_)
- alkaa kirjaimella
- Yksikäsitteinen dokumentin sisällä
Ehdottaisin että globaali tunnus task-id:lle on muotoa
22.lumiukko
(22= monisteen id), Tuota globaalia tunnusta tarvitaan
tietokantaan talletuksessa.
Samuel Uusi-Mäkelä
In GitLab by @Smibu on Jul 31, 2014, 16:27
Ville Tirronen
In GitLab by @Smibu on Aug 3, 2014, 14:27
Kun lisää vahingossa kappaleen ja sitten heti painaa Cancel, niin tulee turhaan kysymys siitä, että tuhotaanko. Eli jos Insert tilanteessa on tyhjä kappale ja Delete tai Cancel, niin ei tarvitse varmistaa.
Vesa Lappalainen
In GitLab by @Smibu on Jul 29, 2014, 14:04
Vaatimuksia tänne:
-
Opiskelija voi vastata yksin tai laittaa kavereita mukaan samalla kertaa, jos tekevät ryhmissä.
- Tähän pitäisi speksata, miten kavereita laitetaan ja talletetaanko
vastaukset jokaiselle kaverille erikseen vai jotenkin kaikille
yhdessä.
- Mitä tapahtuu, jos joku muuttaa vastaustaan jälkikäteen?
- Miten taataan se, ettei laita kavereita vastaajiksi, vaikkeivät ole paikalla.
Ehdotus: Tehtävän kohdalla jokainen voisi rekisteröityä TIMiin
tai TIMiin voi rekisteröityä useita henkilöitä ja silloin tämän
session aikana kaikki vastaukset tallentuvat jokaiselle
henkilökohtaisesti (leimalla nämä tekijät). Kun joku menee yksin
muuttamaan vastausta, hän "eroaa ryhmästä" ja hänen vastauksestaan
syntyy uusi oma versio (mutta selaamisessa opettaja näkee
vanhemmankin ryhmässä tehdyn version).
-
Opiskelija voi ehdottaa pisteitä itselleen.
-
Opiskelija voi tarkastella omaa tehtävää.
- Näkyy luonnostaan
- Miettimistä siinä, miten rajoitetaan vastauskertojen määrä
ja mahdollinen takaraja vastaukselle .
-
Opettaja saa vastaukset näkyviin helposti
- Oma TIMin "appi", jolla vastauksia selaillaan ja muutellaan
tarvittaessa pisteitä.
Tietokannan rakenne tehtävien vastausten ja pisteiden talletuksen osalta
Seuraavassa esimerkissä käyttäjät vesal
ja kalle
ovat vastanneet tehtävään lumiukko
ensin yhdessä, ja myöhemmin vesal
on korjannut omaa vastaustaan ja antanut paremmat pisteet itselleen.
Taulu Answers:
aid | taskId | answercontent | points | timestamp
1 | 22.lumiukko | {choice: 3} | 1.5 | 4.9.2014 15:30
2 | 22.lumiukko | {choice: 2} | 3 | 9.9.2014 14:40
answercontent
in sisältö voi olla myös tiedostossa, jos vastaus on iso, jolloin sarakkeessa on viite tiedostoon.
Taulu UserAnswers:
aid | uid
1 | vesal
1 | kalle
2 | vesal
Taulu AnswerTags:
In GitLab by @Smibu on Aug 3, 2014, 14:27
Muokkasin kappaleen muotoon:
ja se hajosi useaksi kappaleeksi.
Vesa Lappalainen
In GitLab by @Smibu on Jul 28, 2014, 18:48
Ville Tirronen
In GitLab by @Smibu on Jul 30, 2014, 14:34
Toteutettu versioon #85ffbd4. Reitti on rename/from/to
missä from
ja to
ovat document-id:tä.
Huom! Tämä operaatio ei ole atominen!
Ville Tirronen
In GitLab by @Smibu on Jul 28, 2014, 18:40
Ville Tirronen
In GitLab by @Smibu on Aug 6, 2014, 18:11
Ville Tirronen
In GitLab by @Smibu on Jul 28, 2014, 18:46
Ville Tirronen
In GitLab by @Smibu on Jul 28, 2014, 18:45
Ville Tirronen
In GitLab by @Smibu on Jul 31, 2014, 15:41
Ephessä oli pieni bugi, jonka johdosta matchit lasketaan väärin. Korjaan kun vielä muistan.
Ville Tirronen
In GitLab by @Smibu on Jul 28, 2014, 18:47
Ville Tirronen
In GitLab by @Smibu on Jul 29, 2014, 12:07
In GitLab by @Smibu on Jul 28, 2014, 18:34
Ville Tirronen
In GitLab by @Smibu on Jul 30, 2014, 15:38
Esimerkki pluginista joka saa kutsussa käyttäjän tiedot.
Samuel Uusi-Mäkelä
In GitLab by @Smibu on Aug 5, 2014, 13:31
Varattuja sanoja pluginin state
-muuttujassa ovat seuraavat:
Samuel Uusi-Mäkelä
In GitLab by @Smibu on Jul 28, 2014, 18:43
Ville Tirronen
In GitLab by @Smibu on Jul 28, 2014, 18:46
Chatit, web-tehtävät, klikkerit, tulkit ja ylipäänsä kaikki mahdollinen pitäisi saada logattua käyttäjätiedon ja aikaleiman kera.
Pitäisi päättää tehdäänkö tämä TIMin sisällä vai laitetaanko oma Logipalvelin (syslogd? joku muu?)
Ville Tirronen
In GitLab by @Smibu on Jul 28, 2014, 18:39
Eteneminen
- [master deaa011] ApiHec on nyt kutsuttavissa erikseen
HecIFace
n modulilla CallApiHec
Muistiinpanoja
docker run -rm
ajaa kontin ja hävittää sen ajon jälkeen. Juuri oikea toimintatapa tälläisten ajamiseen.
- Nähtävästi
cabal exec
:llä ajettu ohjelma näkee sandboxin kirjastot, muttei globaaleja. Tätä voisi käyttää hyödyksi siinä, kun asentaa palvelimelle!
smallcheck
ja ActiveMaterial/Visual
pitää asentaa silleen, että ghci löytää ne
APIHEC
pitää olla polussa tai pluginin juuressa.
Askeleet
Ville Tirronen
In GitLab by @Smibu on Jul 28, 2014, 18:49
Ville Tirronen
In GitLab by @Smibu on Aug 1, 2014, 15:02
Dokumentin omistaja voi poistaa dokumenttinsa etusivun kautta. Jos dokumentissa on kommentteja, niin tällä hetkellä ne vain jäävät orvoiksi.
In GitLab by @Smibu on Jul 30, 2014, 03:22
Tarvitaan joku tapa esittää TIMin sisäisiä muuttujia.
Esimerkiksi itse tarvitsen niitä usein muuttaakseni
monisteen linkkejä kuluvalle vuodelle sopivaksi.
TIM-muuttaja voisi olla muotoa {{vuosi}}, koska {vuosi}
menee hyvin helposti sekaisin ohjelmakoodien kanssa.
Toki mikä tahansa muukin tapa toimii. Itse olen nuo muuttujat
tehnyt omiin ohjelmiini "makroina", eli kaikki tunnetut muuttujat
käydään ennen data esittämistä (TIMin tapauksessa ennen
selaimelle lähettämistä) etsi/korvaa-tempulla vaihtamassa.
Sitten TIMissa voi olla tukku valmiiksi määriteltyjä muuttujia, joita
voidaan toki käyttää monisteessakin
Hienoa että sinä {{userFirstName}} olet lukemassa tätä monistetta
mutta pääasiassa niitä käyetään viemään tietoa plugineille. Valmiita
voisi olla tyyliin:
{{userId}}
{{userFirstName}}
{{userlastName}}
{{date}}
{{taskID}}
Sitten joku tapa tarvitaan miten muuttujia voisi määritellä?
Oma ehdotukseni voisi olla yksi erityyppinen lohko (kappale),
johon kirjoitetaan jotakin tyyliin
~~~ (#varibales variables)
vuosi:2014
teacher:Vesa Lappalainen
~~~
ja tuo kappale näkyyy TIMin Edit-moodissa, mutta ei View-moodissa.
(ja toki sen editointioikeus käytännössä on vain monisteen
omistajalle).
Vesa Lappalainen
In GitLab by @Smibu on Jul 31, 2014, 17:30
Kun liitteenä olevan tiedoston lataa Ephemeralille esim. curl-komennolla
curl --data-binary @windows_eol_example.txt localhost:8001/load/windows
niin komento
curl localhost:8001/windows
tulostaa (huom. eka merkki on välilyönti)
eli eka rivi puuttuu kokonaan. Ja jos hakee ensimmäistä kappaletta:
curl localhost:8001/windows/0
niin tulostuu
vaikka olisi pitänyt olla eka rivi.
In GitLab by @Smibu on Aug 2, 2014, 17:24
Ks. #18
Tuo pitänee joskus (tulevaisuudessa) muuttaa niin, että
se on Edit-laatikon yksi nappi (Lataa kuva), joka hakee
kuvan ja laittaa siihen Edit-ikkunaan valmiin markdownin.
Ville Tirronen
In GitLab by @Smibu on Aug 3, 2014, 15:57
Katso:
http://tim-beta.it.jyu.fi/documents/22
jokaisen luvun "viimeinen" kappale näkyy tyhjänä. Kun niihin
lisää tyhjän merkin johonkin kohti editillä ja Save, niin
tulee näkyviin.
view-modessa ei näy mitään
Vesa Lappalainen
In GitLab by @Smibu on Jul 29, 2014, 13:12
Pluginin nimi ja sisältö talteen pandocin tuottamasta html:stä ja tim toimittaa pluginille. Plugin toimittaa valmiin HTML-palikan ja client laittaa näkyville.
Osiot
Samuel Uusi-Mäkelä
In GitLab by @Smibu on Aug 6, 2014, 19:37
Tein sekä monivalinta-pluginin, että tekstikenttäpluginin ja 99% javascripteistä oli aivan samanlaisia.
Ajatus oli, että se 99% olisi hyvä laittaa jonnekiin uudelleenkäytettäväksi..
Ongelma on se, pluginit näyttää nyt tältä:
function standardDirective(template,extract) {
return function() {
return {
restrict: 'E',
... }
}
}
angular.module('MCQ', [])
.directive('mcq', standardDirective("MCQTemplate.html"
, function(scope){return scope.userSelection;}));
Ja en oikein keksi miten tuota standardDirective
funktiota pitäisi oikein jakaa. Senhän kuuluisi toimia useammalle pluginille jne.
Ville Tirronen
Recommend Projects
-
-
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
An Open Source Machine Learning Framework for Everyone
-
The Web framework for perfectionists with deadlines.
-
A PHP framework for web artisans
-
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
Some thing interesting about web. New door for the world.
-
A server is a program made to process requests and deliver data to clients.
-
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Some thing interesting about visualization, use data art
-
Some thing interesting about game, make everyone happy.
-
Recommend Org
-
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Open source projects and samples from Microsoft.
-
Google ❤️ Open Source for everyone.
-
Alibaba Open Source for everyone
-
Data-Driven Documents codes.
-
China tencent open source team.
-