Much more text.
This commit is contained in:
BIN
site/writings/bash-prompt-extras.tar.gz
Normal file
BIN
site/writings/bash-prompt-extras.tar.gz
Normal file
Binary file not shown.
17
site/writings/bash-prompt.org
Normal file
17
site/writings/bash-prompt.org
Normal file
@@ -0,0 +1,17 @@
|
||||
#+title: My BASH prompt
|
||||
#&summary
|
||||
What my prompt does and what it looks like.
|
||||
#&
|
||||
#+license: bysa
|
||||
|
||||
* My BASH prompt
|
||||
|
||||
I have my own bash prompt. To use it, first, copy this into your ~.bashrc~:
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
PROMPT_COMMAND="EXCO=$?;pwdw=$(($COLUMNS-20))"
|
||||
PS1='\[\033[00m\]$(if [ $EXCO == 0 ]; then echo -ne "\[\033[42m\]\[\033[01;30m\]"; else echo -ne "\[\033[41m\]\[\033[01;34m\]"; fi)$(length-extra-prepend $EXCO 3)\[\033[45m\] \[\033[44m\]\[\033[01;37m\]$(date +%H:%M)\[\033[45m\] \[\033[46m\]\[\033[01;33m\]$(length-too-much-shorten "$(pwd | sed s%$HOME%~%)" $(if (( $pwdw < 20 )); then echo -n 20; else echo -n $pwdw; fi))\[\033[00m\]\n\[\033[45m\]\[\033[01;33m\]\u\[\033[01;32m\]@\[\033[01;36m\]\h\[\033[43m\]\[\033[01;30m\]:\[\033[40m\]\[\033[01;33m\]\$\[\033[00m\] '
|
||||
#+END_SRC
|
||||
|
||||
Second, download [[bash-prompt-extras.tar.gz]] and put the included programs
|
||||
somewhere in =$PATH=&sh.
|
||||
210
site/writings/digital-sikring.org
Normal file
210
site/writings/digital-sikring.org
Normal file
@@ -0,0 +1,210 @@
|
||||
#+title: Digital sikring mod gennemførsel af eksamen en realitet
|
||||
#&summary
|
||||
A text about the failings of digital education and "copy protection". In
|
||||
Danish.
|
||||
#&
|
||||
#+license: bysa
|
||||
|
||||
Jeg sendte denne besked til Undervisningsministeriet som så fortalte mig at de
|
||||
skam nok var i gang med at gøre det nemmere for "Linus"..
|
||||
|
||||
Sendt 8. marts. Se også <@eval macros.titlelink('stadig-digital-sikring')@>.
|
||||
|
||||
* Digital sikring mod gennemførsel af eksamen en realitet
|
||||
|
||||
At gennemføre en skriftlig eksamen som elev på en gymnasial uddannelse er ikke
|
||||
nemt efter Undervisningsministeriet har indført låse uden nøgler på udleverede
|
||||
cd'er. Problemet bag er dog meget dybere: Digitaliseringen er fejlet.
|
||||
|
||||
Jeg går på htx (teknisk gymnasium) på 3. og sidste år[fn:nomore]. For ikke lang
|
||||
tid siden var jeg til skriftlig terminsprøve i engelsk A hvor terminsprøven var
|
||||
en kopi af eksamen fra juni 2010. Som elev er man ofte lidt nervøs før man skal
|
||||
op til en eksamen. Har man forberedt sig godt nok? Har man glemt noget? Derfor
|
||||
er det vigtigt for eleverne at eksamenen — eller her terminsprøven — er med så
|
||||
få problemer som muligt, helst ingen overhovedet. Spild af tid kan være
|
||||
frustrerende for alle parter.
|
||||
|
||||
En eksamen eller terminsprøve i skriftligt engelsk består af to dele: en
|
||||
grammatikdel, hvor man i en time sidder og løser opgaver i hånden, og en
|
||||
stildel, hvor man har fire timer foran sin egen bærbare computer til at læse et
|
||||
oplæg, læse baggrundsmateriale, se et par korte videoklip der følger med og så
|
||||
skrive stilen. Alt materialet til stilen får man udleveret på en cd. At skrive
|
||||
i hånden i en time kan vi — trods alt — godt formå, men man skulle tro at den
|
||||
anden del, hvor vi bruger vores egen computer, skulle være nemmere for os da
|
||||
mange af os er vant til at skrive på computer. Imidlertid har
|
||||
Undervisningsministeriet valgt at indføre meningsløse begrænsninger der gjorde
|
||||
at jeg skulle vente 35 minutter på at få oplægget og
|
||||
baggrundsmaterialet. Grunden hertil var at cd'erne var kopisikrede på en sådan
|
||||
måde at et af styresystemerne Microsoft Windows eller Apple Mac OS X var
|
||||
krævet. Jeg bruger imidlertid et andet styresystem, kaldt GNU/Linux. Dette er
|
||||
et frit system hvor det er brugeren der styrer computeren, og ikke computeren
|
||||
der styrer brugeren, som det er tilfældet i fx Microsofts produkter og Apples
|
||||
produkter — mere om det senere. Hovedsagen her var at jeg var nødt til at vente
|
||||
til en af skolens it-hjælpere brød kopisikringen på en Windows-computer og gav
|
||||
mig filerne i deres rå form på en usb-nøgle, så min computer kunne læse
|
||||
dem. Problemet med cd'en var at vigtige dokumenter, såsom oplægget, var gemt i
|
||||
et filsystem jeg ikke havde adgang til grundet mit bevidste valg om ikke at
|
||||
bruge hverken Windows eller Mac.
|
||||
|
||||
Da vi fik udleveret cd'erne, stod der rigtigt nok på dem at de kun virkede på
|
||||
Windows og Mac. Jeg har siden været inde på Undervisningsministeriets
|
||||
hjemmeside (se uvm.dk/Uddannelse/Gymnasiale uddannelser/Proever og
|
||||
eksamen/Tekniske specifikationer.aspx), og det viser sig at dette fortsætter i
|
||||
samme linje, bare værre. Kravene til skriftlig eksamen i fysik A i foråret 2011
|
||||
er mere eller mindre de samme som til engelsk A, men i fysik skal man også have
|
||||
software installeret der understøtter Word 2003- og Excel 2003-filer. Begge
|
||||
disse type computerfiler fra Microsoft er i formater hvis specifikationer ikke
|
||||
er tilgængelige, og det er derfor endnu ikke lykkedes at få fuld support for
|
||||
formaterne i programmer der ikke har været inde over Microsoft. Man vil altså
|
||||
være tvunget til at bruge en variant af programmerne fra Microsoft Office for
|
||||
at læse filerne fuldstændigt hvilket hverken er muligt eller ønsket når man er
|
||||
bruger af et frit system. Desuden — og dette er ret så relevant — følger
|
||||
Undervisningsministeriet her ikke nogen af de to obligatoriske standarder for
|
||||
dokumentudveksling som alle offentlige myndigheder har skullet bruge
|
||||
siden 2008. Pjecen "Sådan anvender du åbne standarder for software i det
|
||||
offentlige" fra IT- og Telestyrelsen forklarer ellers disse standarder ret
|
||||
tydeligt. Måske har Undervisningsministeriet indkøbt deres it-løsning
|
||||
før 1. januar 2008, så de ikke er tvunget til at bruge de nye standarder, men
|
||||
at bruge et 8 år gammelt programafhængigt dokumentformat, når et et
|
||||
standardiseret et, som nemt kan læses af alle styresystemer, har været
|
||||
anbefalet i over 3 år, burde ikke være acceptabelt. Undervisningsministeriet
|
||||
har ikke fået nok undervisning.
|
||||
|
||||
Jeg har ikke fysik A, men en fra min klasse der kører GNU/Linux ligesom mig
|
||||
har, og hvis han skal op til eksamen til maj, kan han risikere ikke fuldt ud at
|
||||
kunne læse opgaven — ikke kun fordi cd'en er kopibeskyttet, men også fordi
|
||||
filerne kun kan læses helt korrekt af Microsoftrelaterede
|
||||
programmer. Programmer, mange mennesker over hele verden har valgt ikke at
|
||||
bruge af moralske årsager.
|
||||
|
||||
Men hvad er alt dette softwarefrihed for noget? Nogen vil måske tænke at jeg jo
|
||||
bare kunne skifte til Mac eller Windows og derefter installere alle de
|
||||
computerprogrammer folk ville have jeg skulle installere. Dette er dog ikke en
|
||||
holdbar løsning. Faktisk kommer problemet med de kopisikrede cd'er og de uåbne
|
||||
formater fra noget meget dybere, noget meget værre og noget virkeligt udbredt:
|
||||
proprietær software. Proprietær software er software som kun ophavsretholderen
|
||||
bestemmer over, dvs. brugeren er begrænset af licensaftaler. Disse aftaler er
|
||||
forskellige, men fælles er at man sjældent har mange softwarelaterede
|
||||
rettigheder tilbage når man har sagt ok til en sådan aftale. Hvis man bruger
|
||||
proprietær software, har man ikke kontrol over de programmer man kører, over
|
||||
selve brugen af ens computer. Menneskerne der står bag programmet har
|
||||
kontrol. Og de bruger den kontrol.
|
||||
|
||||
Mange kan nok huske skandalen med e-bookreaderen Kindle (i visse kredse nu
|
||||
kaldt "Swindle") hvor flere mennesker fik slettet bogen "1984" som de havde
|
||||
købt. Dette kunne ske fordi styresystemet på Swindlen er proprietært og altså
|
||||
ikke bliver styret af brugerne af det. Efter en retssag sagde Amazon.com, dem
|
||||
bag sletningen, ok til i fremtiden kun at slette bøger under særlige
|
||||
omstændigheder. Hvis dette ikke var uhyggeligt, ville det være grinagtigt: at
|
||||
der skal en retssag til før en virksomhed vælger ikke at slette bøger fra
|
||||
elektroniske dimser via internettet. Men sådan er proprietær software:
|
||||
utilregneligt og ubrugeligt.
|
||||
|
||||
Der er mange andre eksempler på proprietær software: Microsoft Windows sender
|
||||
uforklarede beskeder til Microsoft en gang imellem, Adobe Photoshop kører kun
|
||||
hvis man har indtastet en speciel nøgle, Facebook indsamler data, censurerer
|
||||
noget, giver andet videre til annoncører, og har fuld mulighed for at gøre mere
|
||||
med dataen, hvilket de nok også gør, og i Apples iPhone og iPad (i
|
||||
"Swindle"-kredsene kaldt "iBad") er det Apple — og ikke forbrugeren — der
|
||||
bestemmer hvilke programmer der må gøres tilgængelige og installeres. I alle
|
||||
tilfælde handler det om kontrol. Virksomhederne, grupperne eller
|
||||
enkeltpersonerne bag ønsker så meget magt som muligt, for de vil tjene mange
|
||||
penge.
|
||||
|
||||
Som computerbruger er man nødt til på et tidspunkt at tænke over hvad der er
|
||||
vigtigst: softwareejernes velvære eller samfundets digitale frihed. For et par
|
||||
år siden valgte jeg friheden fremfor fængslet og skiftede altså til
|
||||
GNU/Linux. Mange før mig havde gjort dette, så det var nemt at komme i gang med
|
||||
mit nye system på min computer. Det er nemt nok til at mine 50+-forældre kan
|
||||
finde ud af det. Kernen i frie systemer såsom GNU/Linux er fri software. Fri
|
||||
software er software der gør brugeren fri vha. disse fire friheder:
|
||||
|
||||
1. Friheden til at køre programmet for et hvilket som helst formål
|
||||
2. Friheden til at studere programmet og ændre i det. Kildekoden til
|
||||
programmet skal være tilgængelig for at dette er muligt
|
||||
3. Friheden til at dele programmet med alle
|
||||
4. Friheden til at ændre i programmet og dele ens ændringer
|
||||
|
||||
Fri software er altså det præcist modsatte af proprietært software. Her er
|
||||
brugeren den vigtigste, for det er brugeren der skal køre programmet. Tilsammen
|
||||
sørger de fire friheder, oprindeligt defineret i sammenhæng med begyndelsen af
|
||||
organiseret udvikling af fri software i midten af 1980'erne, for at ens
|
||||
computer ikke misbruger ens data og ikke begrænser adgangen til og brugen af
|
||||
ens data. Fri software handler ikke om styrken af det tekniske kodestads der
|
||||
ligger bag programmet. Det handler om friheden forbundet med det. I mange
|
||||
tilfælde er fri software dog virkeligt funktionelt, og fx kører langt de fleste
|
||||
hjemmesider netop på fri software. Det fungerer.
|
||||
|
||||
Nogen vil måske opfatte nogle eller alle af de fire friheder for
|
||||
irrelevante. Men går man gennem dem trin for trin, giver de god mening. Først
|
||||
og fremmest: det giver ingen mening at have et program hvis skaber(e) har
|
||||
bestemt du ikke må køre. Det er en bunke bytes som ikke kan fås til at bevæge
|
||||
sig. Her vil nogen måske proteste med henblik på økonomi og påstå at det er
|
||||
nødvendigt at begrænse ens brug af et program indtil man har købt en unik
|
||||
nøgle, for at virksomheden bag kan tjene penge og udvikle nyt software. Dette
|
||||
argument leder tråden væk fra hovedproblemet, nemlig at man skal kunne
|
||||
kontrollere hvad der sker på ens egen computer. Det er dog sandt at det er
|
||||
nemmere at tjene store penge ved at tvinge dem ud af folk — hvilket er det
|
||||
kommercielt proprietær software gør — end ved at bede folk om dem. Der er
|
||||
imidlertid intet galt med fri kommerciel software. Det er betydeligt sværere at
|
||||
blive softwaremilliardær når man sælger fri software istedet for proprietær
|
||||
software, men økonomiske modeller der respekterer softwarefrihed eksisterer
|
||||
skam: man kan fx yde support eller lave skræddersyede løsninger. At have
|
||||
kontrol nok over et program til at kunne køre det bør altså være et must, lige
|
||||
meget om man går op i penge eller ej.
|
||||
|
||||
Det giver heller ingen mening at have et program man ikke må dele. Det er
|
||||
gavnende at dele, og dette gælder især for software. Software er noget man
|
||||
bruger, noget der gør ikke-trivielle ting trivielle, så man kan fokusere på
|
||||
andre, mere interessante ting. Og hvis ens ven har brug for at kunne gøre noget
|
||||
på sin computer, og man har et program der kan gøre netop det, så ville det
|
||||
være mærkeligt ikke at dele programmet med vennen. Programmet er immaterielt,
|
||||
og man mister det ikke ved at dele det. Alt er bare kopier. Mange store
|
||||
virksomheder har i lang tid spredt propaganda om at man er en "pirat" hvis man
|
||||
deler software. Pladeselskaberne er med på denne magtjagt, men for dem handler
|
||||
det om kulturelle værker. For folk der deler betyder det dog ikke så meget hvem
|
||||
der står bag propagandaen. Det vigtigste er at protestere mod den og ikke
|
||||
begynde at tro på den. Hvis man ikke må dele et program, må man lade være med
|
||||
at bruge det. Folk der producerer fri software ønsker at folk kopierer fri
|
||||
software til venner, bekendte og fremmede.
|
||||
|
||||
Selv hvis man kan blive enig med de to forrige forklaringer, vil en del sikkert
|
||||
stadig mene, at de to friheder angående ændring af programmer virker stort set
|
||||
overflødige: almindelige mennesker er jo ikke programmører, og de vil derfor
|
||||
ikke kunne ændre noget lige meget hvad. Disse to friheder handler dog ikke
|
||||
nødvendigvis om at man skal ændre et program selv. Hvis man ikke kan, men har
|
||||
brug for, at ændre et program, skal man kunne hyre nogen der har styr på
|
||||
programmering til at gøre det for en. Frihederne har også et andet, lige så
|
||||
vigtigt formål: når alle frit kan studere koden bag et program, er
|
||||
sandsynligheden for at programmet ikke er ondskabsfuldt uendeligt større end
|
||||
hvis koden ikke var tilgængelig. Hvis der er noget ondskabsfuldt i, kan en
|
||||
eller anden programmør fjerne det og lave en ny version af programmet. Hvis
|
||||
programmet ikke virker, kan en eller anden programmør få det til at virke. I
|
||||
mange tilfælde samarbejder frivillige programmører på tværs af landegrænser i
|
||||
decentraliserede grupper over internettet, og hvis ikke alle kunne studere
|
||||
koden, forbedre den og sprede ideer om implementeringer af diverse algoritmer
|
||||
mm., ville mange af de udbredte frie programmer der bruges i dag ---
|
||||
OpenOffice.org, fx — ikke eksistere i deres udviklede tilstand. Der er dog også
|
||||
rigtig meget fri software der udvikles af enkeltpersoner, men også her giver
|
||||
alle fire friheder mening.
|
||||
|
||||
Fri software er godt for samfundet, ligesom ytringsfrihed er godt, og det er
|
||||
derfor bekymrende at fx Undervisningsministeriet har valgt at alliere sig med
|
||||
virksomheder der producerer proprietær software. Der er sket meget siden GNU
|
||||
(GNU's Not Unix, se gnu.org) og FSF (Free Software Foundation, se fsf.org),
|
||||
henholdsvis et fri software-projekt og en fri software-organisation, begyndte
|
||||
spredningen af fri software i '80'erne, men fri software er ikke færdigt med at
|
||||
blive udbredt endnu. I Danmark virker det som om myndighederne ikke har fulgt
|
||||
helt med udviklingen generelt hvilket bl.a. kom til udtryk ved terminsprøven
|
||||
hvor vi fik udleveret noget så arkaisk som cd'er (i dag har cd'er lidt samme
|
||||
status som disketter havde for 5 år siden). En del fra min klasse havde ikke
|
||||
cd-drev i deres laptops, og de sad ligesom mig og ventede i en god halv time
|
||||
før en usb-nøgle reddede os. Der er simple, tidsbesparende, snydsikre
|
||||
alternativer til uddelinger af skiver — man kunne fx sætte et trådløst netværk
|
||||
op hvor kun oplægget kunne hentes — men dem bruger man ikke. Desværre.
|
||||
|
||||
I april er der en digitaliseringskonference i Aarhus. Jeg håber der kommer
|
||||
noget godt ud af den.
|
||||
|
||||
|
||||
[fn:nomore] Det er jeg ikke længere. Jeg blev student i juni.
|
||||
@@ -1,5 +1,11 @@
|
||||
#+title: Writings
|
||||
#+summary: A list of my writings
|
||||
#+license: bysa
|
||||
|
||||
* Writings
|
||||
|
||||
<@eval macros.list_pages(page.pathdir)@>
|
||||
|
||||
** Old
|
||||
|
||||
+ [[http://projects.metanohi.name/eonaton/?t=0&s=5][Eon Aton]] (both a story and an unfinished game)
|
||||
|
||||
113
site/writings/pygame-pycairo.org
Normal file
113
site/writings/pygame-pycairo.org
Normal file
@@ -0,0 +1,113 @@
|
||||
#+title: Combining PyGame and PyCairo
|
||||
#&summary
|
||||
How to combine two Pythonic graphical frameworks
|
||||
#&
|
||||
#+license: wtf
|
||||
|
||||
* Combining PyGame and PyCairo
|
||||
|
||||
#&+classes=note
|
||||
See [[http://pygame.org/wiki/CairoPygame]] for other examples.
|
||||
#&
|
||||
|
||||
This piece of code allows you to convert a Cairo surface to a PyGame
|
||||
surface. It also includes a small example on how to make SVG loading work. It
|
||||
works with Python 2.5+ and requires relatively recent versions of pygame,
|
||||
pycairo and NumPy to work. For the SVG example to work, you must also have rsvg
|
||||
installed.
|
||||
|
||||
#+BEGIN_SRC python2
|
||||
#!/usr/bin/env python
|
||||
# Copyleft 2010 Niels Serup, WTFPL 2.0. Free software.
|
||||
|
||||
### Imports ###
|
||||
import math
|
||||
import pygame
|
||||
import cairo
|
||||
import numpy
|
||||
import Image
|
||||
|
||||
### Constants ###
|
||||
width, height = 640, 480
|
||||
|
||||
|
||||
### Functions ###
|
||||
def draw(ctx):
|
||||
ctx.set_line_width(15)
|
||||
ctx.arc(320, 240, 200, 0, 2 * math.pi)
|
||||
|
||||
# r g b a
|
||||
ctx.set_source_rgba(0.6, 0, 0.4, 1)
|
||||
ctx.fill_preserve()
|
||||
|
||||
# r g b a
|
||||
ctx.set_source_rgba(0, 0.84, 0.2, 0.5)
|
||||
ctx.stroke()
|
||||
|
||||
def bgra_surf_to_rgba_string(cairo_surface):
|
||||
# We use PIL to do this
|
||||
img = Image.frombuffer(
|
||||
'RGBA', (cairo_surface.get_width(),
|
||||
cairo_surface.get_height()),
|
||||
cairo_surface.get_data(), 'raw', 'BGRA', 0, 1)
|
||||
|
||||
return img.tostring('raw', 'RGBA', 0, 1)
|
||||
|
||||
|
||||
### Body ###
|
||||
# Init PyGame
|
||||
pygame.display.init()
|
||||
screen = pygame.display.set_mode((width, height), 0, 32)
|
||||
|
||||
# Create raw surface data (could also be done with something else than
|
||||
# NumPy)
|
||||
data = numpy.empty(width * height * 4, dtype=numpy.int8)
|
||||
|
||||
# Create Cairo surface
|
||||
cairo_surface = cairo.ImageSurface.create_for_data(
|
||||
data, cairo.FORMAT_ARGB32, width, height, width * 4)
|
||||
|
||||
# Draw with Cairo on the surface
|
||||
ctx = cairo.Context(cairo_surface)
|
||||
draw(ctx)
|
||||
|
||||
|
||||
##### SVG LOADING EXAMPLE #####
|
||||
# Using rsvg it is possible to render an SVG file onto a Cairo
|
||||
# surface. Uncomment the following lines to make it work.
|
||||
#import rsvg # This will probably not work in Windows. As far as I
|
||||
# know, only GNU/Linux distibutions package this Python
|
||||
# module. Nevertheless, it should be easy to create a small wrapper;
|
||||
# see http://www.cairographics.org/cairo_rsvg_and_python_in_windows/
|
||||
|
||||
# Load the file
|
||||
#svg_graphics = rsvg.Handle('path/to/file.svg')
|
||||
|
||||
# Render the graphics onto your Cairo context
|
||||
#svg_graphics.render_cairo(ctx)
|
||||
|
||||
# To get the SVG file's dimensions before you create a Cairo surface,
|
||||
# use the following function:
|
||||
#print svg_graphics.get_dimension_data()
|
||||
###############################
|
||||
|
||||
# On little-endian machines (and perhaps big-endian, who knows?),
|
||||
# Cairo's ARGB format becomes a BGRA format. PyGame does not accept
|
||||
# BGRA, but it does accept RGBA, which is why we have to convert the
|
||||
# surface data. You can check what endian-type you have by printing
|
||||
# out sys.byteorder
|
||||
data_string = bgra_surf_to_rgba_string(cairo_surface)
|
||||
|
||||
# Create PyGame surface
|
||||
pygame_surface = pygame.image.frombuffer(
|
||||
data_string, (width, height), 'RGBA')
|
||||
|
||||
# Show PyGame surface
|
||||
screen.blit(pygame_surface, (0,0))
|
||||
pygame.display.flip()
|
||||
|
||||
clock = pygame.time.Clock()
|
||||
while not pygame.QUIT in [e.type for e in pygame.event.get()]:
|
||||
clock.tick(30)
|
||||
#+END_SRC
|
||||
|
||||
171
site/writings/stadig-digital-sikring.org
Normal file
171
site/writings/stadig-digital-sikring.org
Normal file
@@ -0,0 +1,171 @@
|
||||
#+title: Stadig digital sikring mod gennemførsel af eksamen
|
||||
#&summary
|
||||
A text about the continuing failings of digital education and "copy
|
||||
protection". In Danish.
|
||||
#&
|
||||
#+license: bysa
|
||||
|
||||
Jeg sendte denne besked til Undervisningsministeriet som så forklarede at de
|
||||
var nødt til at bruge kopisikring fordi de brugte tekst, billeder og video fra
|
||||
eksterne kilder (såsom BBC). Det må være muligt for dem at lave bedre aftaler i
|
||||
deres kraft af undervisningsministerium --- desuden er det ikke engang alle
|
||||
skoler der bruger de kopisikrede cd'er, så i flere tilfælde er kopisikring
|
||||
ligegyldig. Så fjern den dog!
|
||||
|
||||
Sendt 31. maj. Se også <@eval macros.titlelink('digital-sikring')@>.
|
||||
|
||||
* Stadig digital sikring mod gennemførsel af eksamen
|
||||
|
||||
Hej UVM
|
||||
|
||||
D. 8. marts sendte jeg jer en klage/ideer-til-forbedring-e-mail ved navn
|
||||
"Digital sikring mod gennemførsel af eksamen en realitet" hvor jeg
|
||||
forklarede jer at kopisikringer på cd'er forhindrede min computer, som
|
||||
kører styresystemet GNU/Linux i stedet for fx Microsoft Windows eller
|
||||
Apple Mac OS X, i at læse teksten på cd'en til skriftlig engelsk
|
||||
terminsprøve (skriftlig engelsk eksamen 2010): videoklippene var
|
||||
tilgængelige i filsystemet, men teksten var der ikke. I skrev tilbage at
|
||||
I arbejdede på at det også skulle virke på GNU/Linux og at der
|
||||
sandsynligvis ikke ville være nogle problemer ved eksamen --- hvilket
|
||||
der så var. I går til skriftlig engelsk eksamen blev jeg endnu en gang
|
||||
ramt af cd-krypteringen, og kun skolens beredskab med en usb-stick
|
||||
reddede mig. Jeg kan acceptere at i sender cd'er ud, men vil I ikke nok
|
||||
lad være med at kopisikre dem? Det er både bedre og nemmere at lave
|
||||
ukrypterede cd'er.
|
||||
|
||||
Jeg ved ikke om dette er den rette kanal, men jeg vil lige beskrive mit
|
||||
problem på en teknisk måde og bevise min påstand om kopisikringen:
|
||||
|
||||
Først og fremmest: kravet til en computer til en skriftlig engelsk
|
||||
eksamen bør være at den understøtter basale standarder inden for tekst,
|
||||
lyd, video og, da I har valgt at bruge et webinterface, webteknologier
|
||||
såsom HTML, CSS og JavaScript. Dette betyder at computeren og det
|
||||
operativsystem der kører på den, skal have support for læsning af
|
||||
HTML-tekst m. CSS og JS der følger en HTML-standard, og systemet skal
|
||||
kunne dekode og afspille lyd og video der er gemt i standardiserede
|
||||
formater. Dette er alt. Man bør ikke stille flere krav.
|
||||
|
||||
GNU/Linux understøtter alle disse nødvendige standarder. Det samme kan
|
||||
ikke helt siges om MS Windows og Apple Mac, men det er muligt at få dem
|
||||
til at understøtte de få nødvendige standarder relativt nemt (selv om
|
||||
det er nemmere bare at skifte til GNU/Linux).
|
||||
|
||||
Men hvilke lyd- og videostandarder? Jeg undersøgte den videofil der
|
||||
fulgte med dette års eksamensoplæg, og jeg så at den brugte VP6 til
|
||||
video og MP3 til lyd. Disse to codecs er begge patenterede, og VP6 er
|
||||
tilmed proprietært. Dette betyder at folk ikke bare kan lave et nyt lyd-
|
||||
eller videoformat uden først at undersøge om bare en lillebitte del af
|
||||
deres format er en del af VP6, for hvis det er tilfældet, er der
|
||||
retssager og pengekrav. Softwarepatenter kan stoppe nogle vakse
|
||||
mennesker med at udvikle nye, revolutionerende computerprogrammer,
|
||||
algoritmer og digitale multimedieformater. Indrømmet, dette er kun
|
||||
direkte et problem i lande hvor softwarepatenter eksisterer, men i VP6's
|
||||
tilfælde er det samtidig også svært at implementere en dekoder da en
|
||||
fuld formatspecifikation med vilje ikke er gjort tilgængelig. Når folk
|
||||
bliver ved med at bruge disse patenterede formater, kan virksomheder
|
||||
føle sig tvunget til at bruge de samme formater, og de frie, bedre
|
||||
formater bliver usynlige. Så selv om EU og Danmark heldigvis ikke har
|
||||
softwarepatenter, bør vi stadig ikke bruger patenterede formater som VP6
|
||||
og MP3. Nogle hårdtarbejdene frivillige har sørget for at der er frie
|
||||
dekodere tilgængelige for VP6 og MP3, så jeg kunne godt se videoen ---
|
||||
det er bare ikke pointen. Formater man ikke kan kontrollere --- formater
|
||||
der bliver kontrolleret af en privat organisation --- bør ikke bruges,
|
||||
så digitalopfindere ikke begrænses af magtbaserede love.
|
||||
|
||||
Alternativet er formater som Ogg Theora eller VP8 for video og Ogg
|
||||
Vorbis, Ogg Speex eller FLAC for lyd. Funktionelt set er disse lige så
|
||||
gode --- eller bedre --- som fx VP6 og MP3, og samtidig er de frie. WebM
|
||||
er en ny "container" der består af VP8 for video og Vorbis for lyd. Den
|
||||
er nem at bruge i webbrowsere, og selv YouTube er begyndt at understøtte
|
||||
den.
|
||||
|
||||
Hvis man brugte WebM men stadig ville gøre det muligt for computere uden
|
||||
flere formater. Det har HTML5 fint support for. Og hvis ens browser ikke
|
||||
understøtter HTML5 --- hvilket er helt ok --- kan man have en Java
|
||||
fallback-player (ikke Flash).
|
||||
|
||||
Og nu til beviset at cd'en var kopisikret: På en brændt cd er der rå
|
||||
data. Denne rå data kan læses hvis man har en cd-læser. Den rå data er
|
||||
den samme uafhængigt af operativsystem, for det samme bliver læst. Den
|
||||
rå data kan dekodes som et filsystem hvor den rå data oversættes til
|
||||
filer og mapper. Både Mac, Windows og GNU/Linux kan læse filsystemet på
|
||||
cd'en, men på GNU/Linux læses ikke hele filsystemet. På GNU/Linux er det
|
||||
let at læse den rå data, så jeg lavede en undersøgelse. Jeg kiggede den
|
||||
rå data igennem for de filnavne GNU/Linux kunne dekode fra cd'en samt
|
||||
det indhold der var i filerne. Cd'en burde bruge et simpelt
|
||||
ISO9660-filsystem, så filnavnene og filindholdene burde bare være
|
||||
direkte læselige, hvilket de også var. Derefter forsøgte jeg samme
|
||||
søgemetode med nogle af de nye filer der var på den usb-stick jeg havde
|
||||
fået udleveret: Jeg fandt intet indhold. Alt det jeg ikke fandt må altså
|
||||
være krypteret på en eller anden Windows- og Mac-venlig måde. Der er
|
||||
ingen grund til at kryptere det.
|
||||
|
||||
Dette er de rodmapper og -filer (efter media/) som jeg har adgang til på
|
||||
den krypterede cd:
|
||||
|
||||
: error.html files/ index.html loading.html xit!.html
|
||||
|
||||
Dette er de mapper og filer jeg har adgang til hvis jeg kunne dekryptere
|
||||
cd'en (data fra usb-stick):
|
||||
|
||||
: data/ files/ flashplayer/ images/ index.html js/ styles/ xit!.html
|
||||
|
||||
Som eksempel på min filsystemssøgning kan vi tage filen 'index.html' som
|
||||
var i den ukrypterede del af cd'en, og filen 'data/uvmXml.xml' som jeg
|
||||
ikke kunne læse fra cd'en.
|
||||
|
||||
Filen 'index.html' eksisterer:
|
||||
|
||||
: $ grep -i index.htm engeks11cd.iso
|
||||
: Binary file engeks11cd.iso matches
|
||||
|
||||
Og indholdet eksisterer også ('<body
|
||||
onload="UVM.view.funcFitToScreen()">' er unikt nok til kun at forekomme
|
||||
i 'index.html'):
|
||||
|
||||
: $ grep '<body onload="UVM.view.funcFitToScreen()">' engeks11cd.iso
|
||||
: Binary file engeks11cd.iso matches
|
||||
|
||||
Vi ser at 'uvmXml.xml' faktisk også eksisterer:
|
||||
|
||||
: $ grep -i uvmXml.xml engeks11cd.iso
|
||||
: Binary file engeks11cd.iso matches
|
||||
|
||||
Men hvad med dens indhold? Fra usb-sticken ved jeg at 'uvmXml.xml' har
|
||||
mange '<CONTENT>'-tags. Så:
|
||||
|
||||
: $ grep -i '<CONTENT>' engeks11cd.iso
|
||||
: $ echo $?
|
||||
: 1
|
||||
|
||||
Indholdet i 'uvmXml.xml' er altså ikke tilgængeligt uden dekryptering.
|
||||
|
||||
Og så lige en anden teknisk ting: Jeg vil ikke blande mig så meget i
|
||||
jeres måde at lave webinterfacet på, men er JavaScript virkelig
|
||||
nødvendigt? Det føles som overkill at bruge jsQuery til at hente data
|
||||
fra en XML-fil og så servere det som HTML. I oplægget fra skriftlig
|
||||
engelsk 2010 var de forskellige ting pænt delt op i separate HTML-filer
|
||||
uden voldsomt brug af scripting. Der er sikkert nogle få elever der har
|
||||
slået JavaScript fra i deres browsere, så det er bedst at holde det
|
||||
simpelt.
|
||||
|
||||
|
||||
|
||||
Nå, bortset fra det var årets stilemne godt.
|
||||
|
||||
|
||||
Relevante links:
|
||||
|
||||
+ [[http://gnu.org/]]
|
||||
+ [[http://fsf.org/]]
|
||||
+ [[http://webmproject.org/]]
|
||||
+ [[http://xiph.org/]]
|
||||
+ [[http://theora.org/cortado/]]
|
||||
+ [[http://w3.org/]]
|
||||
+ [[http://w3.org/TR/html5/video.html]]
|
||||
|
||||
|
||||
V.h. Niels Serup 3. E, HTX Hillerød (snart student)[fn:done]
|
||||
|
||||
|
||||
[fn:done] Jeg blev student i juni.
|
||||
12
site/writings/tfr/index.org
Normal file
12
site/writings/tfr/index.org
Normal file
@@ -0,0 +1,12 @@
|
||||
#+title: The Trasbexian Flow Regulator
|
||||
#&summary
|
||||
A story
|
||||
#&
|
||||
#+license: bysa
|
||||
|
||||
* The Trasbexian Flow Regulator
|
||||
|
||||
"The Trasbexian Flow Regulator" is a short story by Niels. It is available under CC
|
||||
BY-SA 3.0+ as an A5-sized 12-paged pdf.
|
||||
|
||||
<@html <a href='tfr.pdf'>Download.<br /><img src='p1.png' alt='Front page' /></a>@>
|
||||
BIN
site/writings/tfr/p1.png
Normal file
BIN
site/writings/tfr/p1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
BIN
site/writings/tfr/tfr.pdf
Normal file
BIN
site/writings/tfr/tfr.pdf
Normal file
Binary file not shown.
Reference in New Issue
Block a user