Planar for ombyggjing
Grunnar
Per i dag har denne sida berre vore ei samanslåing av ymse netting eg har hatt lyst til å utvikla eller forstå. Det vil seia at eg ikkje har hatt ein plan og prosjekt har ervt ein del unaudig skrot og rot. Likevel har eg fått svar på ei rekkje spurnader eg har stilt. Nokre spurnader i ukjend rekkjefylgje:
-
Korleis funker Php? - Her valde eg å nytta php-cgi. Alt her grunnar seg på omgjevnadsvariablar (eng. environment variables). Desse avgjerd alt frå kva fil php skal grunna seg på, til cookies, til førespurnadsmetode, med meir. Dei vart au fastset før ein køyrer php-cgi. Medan programmet køyrer skal det spytta ut både http-headers (har ikkje god omsetjing her) og kva som finst av innhald som skal videresendast til nyttaren.
Mange liker kanskje ikkje PHP, og det kan ha mange grunnar, men i dag er det eit særs kapabelt språk og det duger til sitt enkle føremål -
Korleis strukturera god CRUD (Create Read Update Destroy). - Eg har ennå ikkje lært dette.., men eg synst at eg har fått øvd meg godt på dette. Mange av sidene har ein eigen database og nyttarsystemet har au ein eigen database. Her har eg nytta mest sqlite, men nyttarsystemet nyttar Postgress.
- Korleis senda filer og vanleg data? - Tidlegare var alle postane sendt med application/x-www-form-urlencoded-enkoding (lenkja går til ei MDN-side om http-post-metoden). Dette var fint når eg berre hadde med nyklar og verdier å gjera, men med filer vart dette meir utfordrande. Her kom multipart/form-data til unnsetning. Han stør at kvart felt har ulik mime-type (filtype/med meir). Han vert også sendt i postkroppen, men i fleire bitar. I mi gjennomføring har eg juksa litt, av di eg hev nytta php til all tolkninga her, men eg las no at det ikkje er so vanskeleg likevel.
Som nemnt ovenfor ynskjer eg ein planlagt struktur, men eg har også ei rekkje mål.
Mål
Til den nye sida har også ei rekkje mål som eg vil ha med meg heile vegen.
Språkskille - Eg vil at kvar side skal finst på fleire språk, med nynorsk som grunnspråk. Førebels vil eg berre stø nynorsk og tysk, men i framtida stør eg kanskje au toki pona, latin og andre språk. Her har eg muligens ei database med omsetjingar til kvart språk, men vi får se med det nedanfor
Eige DSL (Domain Specific Language). - Eg ynskjer at kvart
endpoint
(bane, kor ein koplar til, i dette tilfelle/planar) skal kunne ha sitt eigemini-program
som køyrer når nyttaren bed om ressursen. Desse er separerte per føremål og protokoll. Eit døme på korleis gjesteboka kunne sett ut ved henting med filnamngjesteboka.get.vev(tillet "gjest" "get") (dersom (db (own_db "helsingar")) //kan ikkje abstrahera databaser ennå (db.execute "CREATE TABLE IF NOT EXISTS helsingar (id INTEGER PRIMARY KEY)") (lat ( (lenkje_namn (dersom ((query_string.contains "forskar") && ((query_string.get "forskar") == "1")) ("Lyst til å sjå dei vanlege?") ("Lyst til å sjå kva forskar har å by på?")))) (lenkje_url (dersom ((query_string.contains "forskar") && ((query_string.get "forskar") == "1")) ("https://grim2016.no/gjestebok?forsker=0") ("https://grim2016.no/gjestebok?forsker=1")))) (html (boks (["# Gjesteboka" "Her kan du skriva ei helsing om du vil!"].map md_parse)) (boks (spørjing (["Namn" "Helsing"].map tekst_input_med_label)) (lenkje lenkje_namn lenkje_url)) ) )Her er nykkelorda ljoseraude, funksjonar ljosegrøne, råtekst oransje, og udømde ord kvite.
Språket, kalla vevmaal, er påverka av Lisp. Kvart uttrykk skal kunne evaluerast til ein verdi. Gramatikken er enkel og skal fylgja noko som dette:
uttrykk ⟶ ("(" (påstand | funkjsonskall | uttrykk) ")") | enkel påstand ⟶ dersom | lat | skrivut | lambda | fleire | fastset dersom ⟶ "dersom" uttrykk uttrykk uttrykk? lat ⟶ "lat" ("(" namn uttrykk ")") | ("(" ("(" namn uttrykk ")")+ ")") uttrykk skrivut ⟶ "skrivut" uttrykk funkjsonskall ⟶ uttrykk uttrykk* lambda ⟶ "lambda" "(" namn* ")" uttrykk fleire ⟶ "fleire" uttrykk+ fastset ⟶ "fastset" ( "(" namn+ ")" uttrykk) | namn uttrykk enkel ⟶ namn | (uttrykk "." namn) | literal namn ⟶ [a-Z]([a-Z]|[0-9])* literal ⟶ ("\"" §alle teikn som finst§ "\"") | [0-9]+Her er alt inni " råtekst. Elles er grupperingane litt som regex og sokalla
whitespace
tyder inkje. Teknisk sett er alle program eit sett med blokkar, men eg tenkjer å taka for meg dei eit program som eg las det som eit sett med uttrykk (som også er ei blokk). Meir om språket kan du finna på forgejo sida mi til Vevmål