Phaed:Design

From Carls wiki

Jump to: navigation, search

Ursprungligt mail

> From: Carl Mäsak <cmasak@gmail.com>
> Date: May 18, 2005 9:51 AM
> Subject: livecopy: Aktiv text
> To: Johan Viklund [...], David Fredin [...], Jonathan Alvarsson [...]
>
> Jag fick just en väldigt farlig idé. Jag vet inte vad jag ska göra av
> den, så jag tänkte att jag smittar er med den. :P
> 
> Subtext fick mig att tänka: hårda länkar mellan allt (inklusive text)
> är faktiskt en väldigt bra idé ibland. Tänk er följande hypotetiska
> situation:
> 
> Jag sitter och skriver ett dokument i vim. Dokumentet är i
> kwid-format, mitt nuvarande favoritformat.
> 
> http://autrijus.org/tmp/perlkwid.kwid
> 
> Det ser ut så här:
> 
> =kwid
> = Apple pie
> Sweet.
> = Chocomilk
> Sweet.
> = Lovisa
> Sweet.
> = Sara Grey
> Sweet.
> = Conclusion
> Maybe I should cut down on sugar.
> =cut
> 
> Ok? Så vad gör jag nu med mitt dokument? Jag markerar all text och gör
> en kopia på något sätt -- men med en knorr. Kopian är en levande
> kopia, så när jag ändrar text i originalet så ändras det genast i
> kopian. Faktum är att länkarna är hårda, så bägge textstyckena är
> "kopior" i någon mening: det jag modifierar är inte längre själva
> texten, utan något mer abstrakt (bits) som jag representerar som
> tecken i vim. Det är MVC all over again.
> 
> But wait, it gets worse. :)
> 
> Nu väljer jag det översta textstycket, går in i någon simpel
> inställningsmoj och säger "View as index". Tjops, så har jag en
> innehållsförteckning.
> 
> =kwid
> = Contents
> * Apple pie
> * Chochomilk
> * Lovisa
> * Sara Grey
> 
> = Apple pie
> Sweet.
> = Chocomilk
> Sweet.
> = Lovisa
> Sweet.
> = Sara Grey
> Sweet.
> = Conclusion
> Maybe I should cut down on sugar.
> =cut
> 
> (Reguljära uttryck eller något i botten gör konverteringen.) Och
> allting DWIMmar! Redigera en rubrik i innehållsförteckningen: tjops,
> den ändras i texten. Ta bort en rubrik i texten, tjops så är den borta
> i innehållet. Och vice versa på bägge dessa (fast tar man bort en
> rubrik i innehållet så försvinner hela kapitlet i texten).
> 
> Ok? Nu: när man sparar texten så dör alla levande kopior; klart o-bra.
> Därför väljer vi att lagra all levande information i diskreta
> footerkommentarer, lämpligen i YAML.
> 
> http://www.yaml.org/about.html
> 
> Detta funkar för alla dataformat som har kommentarer, dvs nästan allt
> utom ren text. För ren text och lite andra situationer (till exempel
> publicering) kan vi lagra den levande informationen externt utan
> direkt koppling till textfilen... men om man anger ett visst filnamn,
> t.ex. $textfil.liveinfo så kan vim automatiskt hitta den och (kanske)
> fråga om den ska väcka upp textfilen vid inläsning.
> 
> Det var skapande och upprätthållande, det. Man dödar enklast en
> hårdlänk genom att... you guessed it, ta bort footerkommentaren som
> beskriver den. Yep, kommentarerna är också bara en vy mellan
> kommentarstexten och de verkliga hårdlänkarna. :) (Men det finns ingen
> explicit hårdlänk som anger detta, det är en implicit meta-länk.) Är
> man på det humöret så kan man även skriva egna hårdlänkar manuellt.
> 
[...]

Uppföljningsmail

> From: Carl Mäsak <cmasak@gmail.com>
> Date: May 18, 2005 5:13 PM
> Subject: Re: livecopy: Aktiv text
> To: Johan Viklund [...], David Fredin [...], Jonathan Alvarsson [...]
>
> > Carl (>):
> > Nu väljer jag det översta textstycket, går in i någon simpel
> > inställningsmoj och säger "View as index". Tjops, så har jag en
> > innehållsförteckning.
> 
> Hm. Litet problem om jag väljer det undre textstycket och visar den
> som index också:
> 
> =kwid
> = Contents
> * Apple pie
> * Chochomilk
> * Lovisa
> * Sara Grey
> 
> = Contents
> * Apple pie
> * Chochomilk
> * Lovisa
> * Sara Grey
> =cut
> 
> ...och sedan sparar. Whoops, vart tog all min text vägen?
> 
> Tänkbar lösning: det finns två typer av vyer,
> 
> # injektiva (100% information representeras)
> # degenererade (viss information representeras inte)
> 
> Vyerna vet om vilken av dessa typer de tillhör. När man sparar frågar
> programmet för varje modell som bara visas av degenererade vyer, om
> man vill
> 
> # växla vy (och då får man välja interaktivt att växla någon av de
> vyer det gäller till en injektiv vy), eller
> # slänga den 100%iga informationen,
> # spara någon vy av modellen på en annan fil.
> 
> Naturligtvis får man inte samma fråga för varje modell, snarare får man:
> 
> "Um, there are a couple of models here which are not fully represented
> in file. Please choose what to do with them."
> 
> Model   View 1     View 2     View 3     Throw     Save to file
> 
> m1      [ ]        [ ]        [ ]        [X]       [ ] [............]
> m2      [ ]                   [ ]        [X]       [ ] [............]
> m3      [ ]        [ ]                   [X]       [ ] [............]
> m4      [ ]                              [X]       [ ] [............]
> 
> [OK] [Cancel]
> 
> // Carl