TIM-JYU / TIM

TIM (The Interactive Material) is an open-source cloud-based platform for creating interactive learning documents.
https://tim.education/view/about/en-US
MIT License
13 stars 4 forks source link

Plugin pugeja #295

Closed dezhidki closed 2 years ago

dezhidki commented 9 years ago

In GitLab by @Smibu on Aug 21, 2014, 08:23

Lisäilen tähän kommentteja, epäymmärryksiäni, ongelmia ja "bugeja", joita plugin rajapinnassa tuli vastaan. Näitä voi sitten siirrellä omiin kortteihinsa jos triviaali vastaus ei riitä.

Nostin Checklistaan bugeja että ne näkyvät paremmin ja mitä käsitelty. Kun kaikki ruksittu, siirrän tämän arkistopuolelle. Tosin jää tähän joitakin "opetuksia" itselleni (VL)...

Tämän kortin bugit

Vesa Lappalainen

dezhidki commented 9 years ago

In GitLab by @Smibu on Aug 21, 2014, 08:27

Pitäisikö ympäröivässä divissä:

<div id="omanimi" data-plugin="http://tim-beta.it.jyu.fi/cs" class="ng-scope">

olla data-pluginin osoite TIMin sisälle eikä itse pluginiin? Eikös selaimen pitänyt kutsua TIMiä joka sitten välittää kutsun (answer) täydennettynä pluginille?@samueluusimakela1 @villetirronen – Vesa Lappalainen

dezhidki commented 9 years ago

In GitLab by @Smibu on Aug 21, 2014, 08:31

Menikös js ja css niin, että pluginin reqs antaa suhteellisen osoitteen, jonka tim laittaa esim http://tim-beta.it.jyu.fi/csPlugin/cs/js/dir.js ja sitten kun selain pyytää js:ää tuosta osoitteesta, niin TIM vaihtaa tuon kutsun osoitteeseen http://tim-beta.it.jyu.fi/cs/js/dir.js

Onko tuo jo tehty, sillä multa jäi JS:ät suhteellisella osoitteella tulematta.@villetirronen @samueluusimakela1 – Vesa Lappalainen

dezhidki commented 9 years ago

In GitLab by @Smibu on Aug 21, 2014, 09:03

@vesal

olla data-pluginin osoite TIMin sisälle eikä itse pluginiin?

Kyllä – Ville Tirronen

dezhidki commented 9 years ago

In GitLab by @Smibu on Aug 21, 2014, 09:04

Sitten on ihan omituinen bugi, josta en tiedä onko vika mun koodissa vaiko TIMin päässä:

1) Muokkaan py-koodia ja käynnistän csPlugin-palvelimen uudelleen 2) Kaikki toimi hienosti 3) muokkaan js (angular)-koodia /tai aikaa kuluu n. sek, (en tiedä paljonko, yön yli riitti) 4) Refreshaan csPluginia käyttävän sivun ja sivun angular kaatuu valittaa että:

Failed to execute 'setAttribute' on 'Element': 'usercode':' is not a valid attribute name.

5) Sama vika toistuu nyt kaikilla selaimilla kun tähän tilaan on jouduttu, eli kyse ei ole selaimen muistista.

6) Käynnistän csPlugin palvelimen uudelleen ja virkistän sivun ja hienosti toimii seuraavaan jumiintumiseen saakka. Eli kun ollaan tässä tilanteessa, csPluginit eivät toimi vaan näyttöön jää angularin kaatumisen takia se angular-hitml -koodi.

@villetirronen @samueluusimakela1

Koko Console-ikkunan sisältö em. tilassa:

Error: Failed to execute 'setAttribute' on 'Element': 'usercode':' is not a valid attribute name. at Error (native) at m.extend.attr (http://tim-beta.it.jyu.fi/static/scripts/jquery-1.11.1.min.js:4:10300) at m.access (http://tim-beta.it.jyu.fi/static/scripts/jquery-1.11.1.min.js:3:3368) at m.fn.extend.attr (http://tim-beta.it.jyu.fi/static/scripts/jquery-1.11.1.min.js:4:9823) at Object.Attributes.$set (http://tim-beta.it.jyu.fi/static/scripts/angular-1.2.9/angular.js:5440:28) at http://tim-beta.it.jyu.fi/static/scripts/angular-1.2.9/angular.js:6320:15 at forEach (http://tim-beta.it.jyu.fi/static/scripts/angular-1.2.9/angular.js:310:20) at mergeTemplateAttributes (http://tim-beta.it.jyu.fi/static/scripts/angular-1.2.9/angular.js:6315:7) at applyDirectivesToNode (http://tim-beta.it.jyu.fi/static/scripts/angular-1.2.9/angular.js:5970:13) at compileNodes (http://tim-beta.it.jyu.fi/static/scripts/angular-1.2.9/angular.js:5587:15) angular.js:9423 (anonymous function) angular.js:9423 (anonymous function) angular.js:6842 Scope.$digest angular.js:11831 Scope.$apply angular.js:12065 (anonymous function) angular.js:1302 invoke angular.js:3714 doBootstrap angular.js:1300 bootstrap angular.js:1314 angularInit angular.js:1263 (anonymous function) angular.js:20559 j jquery-1.11.1.min.js:2 k.fireWith jquery-1.11.1.min.js:2 m.extend.ready jquery-1.11.1.min.js:2 J

dir.js (csPluginin js-koodi) on haettu uudelleen, samoin cs. – Vesa Lappalainen

dezhidki commented 9 years ago

In GitLab by @Smibu on Aug 21, 2014, 09:10

@vesal

Menikös js ja css niin, että pluginin reqs antaa suhteellisen osoitteen, jonka tim laittaa esim http://tim-beta.it.jyu.fi/csPlugin/cs/js/dir.js ja sitten kun selain pyytää js:ää tuosta osoitteesta, niin TIM vaihtaa tuon kutsun osoitteeseen http://tim-beta.it.jyu.fi/cs/js/dir.js

Nähdäkseni tuon kuuluu mennä niin, että jos plugin sanoo reqsissä, että js:"skriptei/foo.js", niin se tarkoittaa että:

a) Plugin lupaa, foo.js löytyy pluginilta pyynnöllä GET /skriptei/foo.js b) TIM lupaa, että jos sivulla on em. plugin, niin sivun alussa sellainen <script>-tagi, josta selain osaa hakea tuon foo.js:n.

Se miten TIM tarkalleen ottaen tämän tekee ei kuulu rajapintaan ja pitäisi hoitaa niin, että pluginin kirjoittaja ei joudu sillä vaivaamaan päätään. – Ville Tirronen

dezhidki commented 9 years ago

In GitLab by @Smibu on Aug 21, 2014, 09:16

@villetirronen @samueluusimakela1 Eli nyt tuo data-plugin osoite on siis väärin ja korjaanutneen jossakin vaiheessa :-) – Vesa Lappalainen

dezhidki commented 9 years ago

In GitLab by @Smibu on Aug 21, 2014, 09:29

@vesal data-pluginin ei pitäisi suoraan liittyä js:iin ja css:iin, mutta templaatteihin kyllä. Ihan vaan varmistan, että puhutaan samasta asiasta:

Miten tuo data-plugin osoite on väärin? Sen speksihän on, että <data-plugin>/joku/urlin/pala osuu kyseisen pluginin reittiin /joku/urlin/palaVille Tirronen

dezhidki commented 9 years ago

In GitLab by @Smibu on Aug 21, 2014, 09:37

@villetirronen Datapluginin osoite:

Nyt siis mulle tulee html:ään TIMin toimesta.

´´´

´´´´ joka siis on mun pluginin reititetty osoite jolloin TIM ei pääse väliin. Mun mielestä tuo pitäisi olla esim: http://tim-beta.it.jyu.fi/csPlugin koska tuolla containerLink.py on: ``` PLUGINS = [ {"host" : "http://tim-beta.it.jyu.fi/cs/", "name" : "csPlugin"}, ``` Sitten TIM seuraa reittä .../csPlugin ja jatkaa niitä siten tuolle .../cs osoitteelle mielensä mukaan. – *Vesa Lappalainen*
dezhidki commented 9 years ago

In GitLab by @Smibu on Aug 21, 2014, 09:39

@vesal Ok. Kiitos selityksestä. Näiden kanssa kannattaa kertoa tarkasti, kun ei oikein muuten voi tajuta missä vika. – Ville Tirronen

dezhidki commented 9 years ago

In GitLab by @Smibu on Aug 21, 2014, 09:39

@villetirronen Joo, mutta mulle tulee ilman absoluuttista osoitetta tuohon nyt väärä osoite joka ei siis ole sen mun cs-osoite.

Mun pitää poistaa .py koodissa se absoluuttinen osa ja katsoa mikä tuohon tulee. Mutta nyt en sitä viitsi tehdä, ksoka mulla on sen toisen puguin metsästys menossa ja silloin tilanne menee pois päältä jos käynnistän pluginin uudelleen. – Vesa Lappalainen

dezhidki commented 9 years ago

In GitLab by @Smibu on Aug 21, 2014, 09:58

@vesal

Sitten on ihan omituinen bugi, josta en tiedä onko vika mun koodissa vaiko TIMin päässä:

Testaa curlilla. Jos toimii sillä, niin sitten vika on timissä. Sen jälkeen ota kiinni se timin pyyntö (Esim. kokeile rfile.seek(0); print(rfile.read()) **) ja vertaa, että miten se eroaa siitä omasta pyynnöstä

*) En ole ikuna käyttänyt tuota simplehttp:tä joten tämä on 100% arvaus. – Ville Tirronen*

dezhidki commented 9 years ago

In GitLab by @Smibu on Aug 21, 2014, 10:10

@villetirronen usercode-bugi:

Sen verran tiedän, että nyt virhe on päällä kaikissa dokuissa joissa on csRunner -direktiivi.

Sitten mulla on sivu:

http://users.jyu.fi/~vesal/tim/ajaViewDir2.html

jossa käytetään "käsin" noita direktiivejä, ja tuo sivu siis toimii.

Erona on toki vielä se, että tuossa HTML on tehty käsin ja pluginin kanssa se muodostetaan JSONin perusteella. Voihan tuossa olla vielä joku mystinen pluginiin jumiintunun globaali muuttuja (joita en ole kyllä tietoisesti käyttänyt), joka käyttäytyy JSONin kohdalla eri tavalla. Tutkin seuraavaksi tuota että palauttaako vika "päällä" erilaista HTML:ää kuin ilman vikaa. Pitää vaan välttää pluginin uudelleen käynnistystä. – Vesa Lappalainen

dezhidki commented 9 years ago

In GitLab by @Smibu on Aug 21, 2014, 10:21

@vesal Näen tuolla html:ssä tämmösen rivin:

Voiko tuo input="{" vaikuttaa ongelman syntyyn? – *Samuel Uusi-Mäkelä*
dezhidki commented 9 years ago

In GitLab by @Smibu on Aug 21, 2014, 10:25

huomasin just ite saman ja tutkin mistä se tuonne ilmestyy. teidän ei tarvitse hetkeen tätä ihmetellä – Vesa Lappalainen

dezhidki commented 9 years ago

In GitLab by @Smibu on Aug 21, 2014, 10:31

Tuplaantuvat pluginit: Jos samalla sivulka on kaksi tai useampi csPlugin, niin seuraava "perii" edellisen attribuutit jos niitä ei ole erikseen annettu. Tutkin ensin itse onko tämä mun vika vai tuleeko tuo tuplaus Timin puolelta. – Vesa Lappalainen

dezhidki commented 9 years ago

In GitLab by @Smibu on Aug 21, 2014, 10:37

Tiedoksi ( ja itselle muistiin hakusana Python http request)

print(rfile.read())

on ongelmallinen, sillä se lukee sen mitä on dataa tullut requestissa ja jää odottamaan lisää, Tappelin tuon kanssa eilen aika kauan, kunnes tajusin että pitää antaa parametriksi content-length :-)

Vesa – Vesa Lappalainen

dezhidki commented 9 years ago

In GitLab by @Smibu on Aug 21, 2014, 11:46

@villetirronen @jonneitkonen @samueluusimakela1 Tuplaantuvat ppluginit ja se toinen omituinen bugi:

Ongelman lyhennettynä:

__author__ = 'vesal'
import pprint
pp = pprint.PrettyPrinter(indent=4)

class QueryClass:
    query = {}
    jso = None

o1 = QueryClass();
o1.jso = "Koira"
o1.query["a"] = "kana"
pp.pprint(o1.query)

o2 = QueryClass();
o1.jso = "Kettu"
o1.query["b"] = "mato"

pp.pprint(o2.query)

Tulostaa:

{'a': 'kana'}
{'a': 'kana', 'b': 'mato'}

Miksi ihmeessä tuo o2 ei saa uutta tyhjää dictionaryä tuossa kun olio "luodaan"? – Vesa Lappalainen

dezhidki commented 9 years ago

In GitLab by @Smibu on Aug 21, 2014, 11:50

@vesal Luitko sen python tutoriaalin? Tuossa query ja jso ovat luokkamuuttujia.

Tarkoititko ennemin:

class QueryClass:
    def init(self):
      self.query = {}
      self.jso = None

Ks. https://docs.python.org/2/tutorial/classes.html#class-objectsVille Tirronen

dezhidki commented 9 years ago

In GitLab by @Smibu on Aug 21, 2014, 12:09

@villetirronen Jonkin naapurin pojan esimerkin otin ja siinä oli tyytynät näköjään tuohon luokkamuuttujaan. Harmi että taas erittäin harvoin tarvittava ominaisuus on helpompi tehdä kuin haluttu ominaisuus :-( Globaalin käytössä on asiaa vaikeutettu Pythonissa ja saman olisi saanut tehdä luokkamuuttujien kanssa... – Vesa Lappalainen

dezhidki commented 9 years ago

In GitLab by @Smibu on Aug 21, 2014, 13:04

Vesa Lappalainen mentioned you on the card Plugin pugeja on TIM Devel

Koska luot query-kentän luokalle, et oliolle =>

class Query: def init(self): self.query = {}

Samatapainen juttu on sitten funktioissa, eli

def foo(a,l=[]): l.append(a) return l

Tuo alustaa l:n _vainkerran, eli silloin kun tuo funktio luodaan, EI silloin, kun sitä kutsutaan.

Jonne – Jonne Itkonen

dezhidki commented 9 years ago

In GitLab by @Smibu on Oct 13, 2014, 15:24

Mihinkäs tuo "JS-tiedostojen osoite" viittaa? Ja voisiko siitä luoda oman korttinsa? Tämä nykyinen on vähän epämääräinen; voisiko arkistoida?

dezhidki commented 9 years ago

In GitLab by @Smibu on Mar 7, 2015, 20:48

Jos pluginin YAMLissa on sopivasti vikaa, niin siitä ei tule selaimeen mitään ja silloin virhettä ei pääse edes korjaamaan. @Smibu – Vesa Lappalainen

dezhidki commented 6 years ago

In GitLab by @Smibu on Nov 13, 2017, 22:53

closed