Jump to: navigation, search


Using the "Trust Compact Racing Wheel CTX 570" from Python

I just bought this racing wheel the 26. of December for 249 SEK. The price was reduced by about 50% and I wondered if I could use it from Python. The wheel has USB interface and I thought it would be easy to connect to from Python, but it proved to be bit of a challenge in at least two ways:

I found and installed the Windows 7 driver for the CTX 570 racing wheel from and checked that it worked. There is a nice test option in the driver software.


The steering wheel, all buttons and the pedals worked.

I think I did approximately the following in Python 3.4:

>>> import usb.core
>>> from usb.backend import libusb1
>>> be = libusb1.get_backend()
>>> dev = usb.core.find(backend=be)
Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    dev = usb.core.find(backend=be)
  File "C:\Python34\lib\site-packages\usb\", line 1263, in find
    raise NoBackendError('No backend available')
usb.core.NoBackendError: No backend available
>>> import usb.core
>>> from usb.backend import libusb1
>>> be = libusb1.get_backend()
>>> dev = usb.core.find(backend=be)
>>> type(dev)
<class 'usb.core.Device'>

I noticed that the installation created a folder, C:\Program Files\LibUSB-Win32. I run C:\Program Files\LibUSB-Win32\bin\inf-wizard.exe and the program offered to create .inf files for my USB devices and showed a nice list of all active devices with Vendoer ID, Product ID and meaningful Description telling me that I have External HDD, USB RACING WHEEL, USB2.0-CRW (card reader) and USB OPTICAL MOUSE connected to the computer.


I select the USB RACING WHEEL and am presented with a dialog box with the following entries:

And I create an .inf file with this information and save it to my Documents folder. After saving the file a new dialog box pops up telling me that "A windows driver installation package has been created for the following device:" and then comes the above mentioned info about the device and the text "This package contains libusb-win32 v1.2.6.0 drivers and support for the following platforms: x86, x64, ia64.". Then there are two buttons Install Now.. and Done.

I pressed the Install Now.. button and that started the installation process.


After few minutes the installation was finished.

I was now eager to test if I had ruined my small progress above when i got rid of the NoBackendError. So I closed IDLE and started it again and executed the same code as before in the Python terminal.

>>> import usb.core
>>> from usb.backend import libusb1
>>> be = libusb1.get_backend()
>>> dev = usb.core.find(backend=be)
>>> type(dev)
<class 'usb.core.Device'>

So far, so good. But how can I get values from device, read the status of buttons and activate the vibration motors?

Activate vibration motors and read status of steering wheel, pedals and buttons

I had no idea how to proceed so just to do something I started following the PyUSB tutorial at It starts with some definitions and information about the organization of submodules in the usb module and then comes a section named Let's get it started where a program that sends the string 'test' to the first OUT endpoint of a USB device, is presented. My experimentation in the Python terminal with this code follows.

>>> import usb.util
>>> dev = usb.core.find(idVendor=0x0E8F, idProduct=0x0003)  #NB her I used the VendorID and the ProductID from above.
>>> dev
<DEVICE ID 0e8f:0003 on Bus 000 Address 002>
>>> type(dev)
<class 'usb.core.Device'>
>>> if dev is None: raise ValueError("Device not found")

>>> if dev is not None: raise ValueError("Device not found")

Traceback (most recent call last):
  File "<pyshell#13>", line 1, in <module>
    if dev is not None: raise ValueError("Device not found")
ValueError: Device not found
>>> dev.set_configuration()
>>> cfg = dev.get_active_configuration()
>>> type(cfg)
<class 'usb.core.Configuration'>
>>> intf = cfg[(0,0)]
>>> intf
<INTERFACE 0: Human Interface Device>
>>> type(intf)
<class 'usb.core.Interface'>
>>> ep = usb.util.find_descriptor(
	#match the first OUT endpoint
	custom_match = \
	lambda e: \
	    usb.util.endpoint_direction(e.bEndpointAddress) == \
>>> assert ep is not None
>>> ep.write('test')

And now, to my surprise, one of the motors in the steering wheel started running. I had by pure chance succeeded in activating a motor!!! Very good! Serious breakthrough! Now I had a Hello World program. That is, I had installed the hardware and the software and made (borrowed) a program that could run and do something typical for what we might want to do with this combination of software and hardware. For a better explanation of the phrase Hello World see,_World!%22_program and

When the motor had buzzed for a minute or two, it was not fun any more. I wanted to turn it off and I found a way to do that, -indeed to ways.

Playing with the objects ep and dev instantiated in the above program I found that the following two statements stop the motor.

>>> ep.device.reset()


>>> dev.reset()

I did this just by utilizing the drop down list that is displayed to help us complete statements by showing the possible ways of continuing writing the statement, -typically by waiting a second or two when writing the period in, for example dev.reset(). That triggers the display of a drop down list with all the allowed ways (properties or methods) of continuing. This is a feature of IDLE, but most good integrated development environments, IDE's, support something similar.

I also learned that the motor could be started with the following statement.

>>> dev.write(ep, "test")

And the motor could also be started by replacing the endpoint variable ep with an integer. The length of the text string seemed not to have any significance.

>>> type(ep)
<class 'usb.core.Endpoint'>
>>> ep
<ENDPOINT 0x2: Interrupt OUT>
>>> dev.write(2, "test")
>>> dev.reset()
>>> dev.write(2, "test")
>>> dev.reset()
>>> dev.write(0x2, "test")
>>> dev.reset()
>>> dev.write(0x2, "t")
>>> dev.reset()
>>> dev.write(0x2, "")
>>> dev.reset()
>>> dev.write(0x2, "aaaaaaaaa")
>>> dev.reset()

After this experimental approx I feel confident that I can read and write to the CTX 570 Racing Wheel, but writing this description of the process has consumed several hours, so it must wait. But I feel that the next section of this documentation, if ever written, could be named "Exploring device attributes - status of buttons, position of wheel and pedals". (Gkb 05:37, 29 December 2016 (CET))

Exploring device attributes - status of buttons, position of wheel and pedals

Papert, ...

Roterende boks lavet med Visual Python

import visual
x_akse=visual.cylinder(radius=0.05,, axis=(5,0,0))
y_akse=visual.cylinder(radius=0.05,, axis=(0,5,0))
z_akse=visual.cylinder(radius=0.05,, axis=(0,0,5))
rotations_akse_for_b1=visual.cylinder(pos=(-2,-2,-2), radius=0.05, color=visual.color.yellow, axis=(4,4,4))
b1 =,1,1), pos=(0,0,0))
while True:
    b1.rotate(angle=0.06, axis=(1,1,1), origin=(.5,.5,.5))

Afprøvning af tabeller med MediaWiki

Food complements
Dit navn IT-komponentens navn Screendump Funktion Ophavsmand/mænd Årstal når IT-komponenten fremkom Organisation Licens Pris Primære kilder Orange Apple
Bread Pie
Butter Ice cream


Installering af Ubuntu

Efter installering af Ubuntu 16.04 Live udfører vi følgende kommandoer.


Testing GCP, Google Compute Platform

Ubuntu 16.04 LTS xenial



http, https, ssh, 80, 443, 22

Source filter

Allow from any source (
Allowed protocols and ports


Jeg testede vistnok ikke om denne regel ændrede noget, inden jeg indså at Apache2 nok ikke var installeret, så jeg fortsatte som beskrevet nedenfor.




Source filter

Allow from any source (
Allowed protocols and ports


Og den gjorde at jeg nu kunne reloade siden og Apache's velkomstside blev vist i browseren.

Debian GNU/Linux 7.9 (wheezy) med Moodle fra Bitnami

Webserver for RTG MediaLab


Det overordnede formål med webserveren er at understøtte undervisningen på Roskilde Tekniske Gymnasium ved at give elever, lærere og evt. andre brugere, adgang til webdesign og videndeling.

Brugerne får adgang til webdesign i et generiskt Linux miljø og de får adgang til videndeling i en wiki. Den wiki som vi har valgt at brue er MediaWiki, som er den samme software som bruges af det vel kendte system

Vi forventer at det vil gavne elevernes indsigt og forståelse af de nye medier at arbejde på grundlæggende niveau både med webdesign og videndeling i en wiki.

Et mere konkret formål med webserveren er at lette opfyldelsen af diverse faglige mål og kernestofskrav i undervisningsfagene som undervises i RTG-MediaLab. Det handler om fagene Kommunikation/IT C og A, Informationsteknologi B, Programmering C og Design C.

Det forhold at alle elever har Kommunikation/IT C på 1. år gør at vi siden 2005 har oprette alle 1. års elever som bruger i systemet. Alle skolens elever har således haft mulighed for at bruge systemet også på 2. og 3. år. De lever som har haft undervisning i MediaLab på 2. og 3. år har i de fleste hold/klasser brugt systemet til at aflevere sine opgaver og lave sine portfolio'er.

Eksempler på hvordan RTG MediaLabs webserver understøtter undervisningen i nogle forskellige fag


Anvendte delsystemer

Vigtige Linux kommandoer som forventes anvendt

Funktionalitet i det eksisterende system forår 2016

Overordnet beskrivelse

Systemet gør det muligt for elever at arbedje med webdesign på en webserver i et Linux miljø, under tilsyn og kontrol af lærere i RTG MediaLab.

Det understøtter oprettelse af brugere, ændring af password og fjærnelse af brugere. Flytning mellem klasser og tildeling af kvota for lagerplads, adgang til MySQL server, indtastning af telefonnumer og email mm.

Systemet understøtter også oprettelse af arbejdsgrupper, projekt users, hvor gruppens medlemer har tidsbegrænset adgang til projektbrugerens home-directory.

Brugernavne generereres automatisk ud fra brugerens fornavn, mellemnavne og efternavn, samt årstallet hvor eleven begynder på skolen/oprettes. Hovedreglen er at bruge brugerens fornavn og første bogstav i mellemnavne og efternavne og så til slut de to sidste cifre i årstallet. Dette betyder at en bruger som hedder Jens Martin Joachim Peter Olsen vil få brugernavnet jensmjpo16 hvis han begynder på skolen i efteråret 2016. Hvis der findes en bruger i forvejen som har fået brugernavnet, så tilføjes vistnok automatisk bare bogstaverne a, b, c osv. indtil der ikke er en konflikt.

Systemet gør det muligt at oprette brugere i grupper, f.eks. klasser, på baggrund af tekstfiler med elevernes navne. En tekstfil for hver klasse. Vores praksis indtil nu har været at oprette "stamklasserne" på 1. år som grupper i systemet. Tekstfilerne har vi endten fået ved at kopiere klasselisterne fra websiderne i Lectio eller fra export til Excel format fra Lectio. Nogle gange har vi fået disse filer fra elevadministrationen og andre gange har vi selv lavet dem.

Hver bruger får ved oprettelsen rettigheder til at lave et website, som vi kalder StudieWeb, på vores webserver. Brugerne har adgang til deres home-directory på webserveren med SFTP og SSH.

Der genereres små tekstfiler, en for hver bruger, som indeholder den information som brugeren behøver for at begynde at bruge systemet. Det er altså brugernavnet som brugeren har fået tildelt, det tilhørende password og URL'en for webserveren???. Tanken er/var at disse filer kunne udskrives på papir eller emailes til brugerne.

Brugernes email og mobiltelefon registreres manuelt vha. programmet /files/scripts/ som tilgås via en shell mod webserveren.

Indtil nu har vi manuelt og i samarbejde med elever i klasserne indtastet disse informationer.

Samme program,, anvendes også til de fleste andre opgaver i forbindelse med administration af information om brugerne. F.eks. om de skal have mulighed til at bruge vores MySQL database management system (DBMS), hvor meget plads de har lov at bruge, flytte dem mellem grupper/klasser og sende nye passwords til dem via email eller SMS.

Hvis en bruger har glemt sit password, så kan han eller hun ikke selv initiere fremsendelse af nyt password eller en process som kan bruge til selv at lave et nyt password.

En administrator kan logge ind via shell og ændre passwordet for brugeren med den semi-grafiske brugerflade i eller med shell scriptet /files/scripts/ En nærmere beskrivelse af

består af en w

Brugshistorier (User Stories)


Funktionskrav aasdf asdfa asdf

Klade for feedback på miniSRP opgaven til InfB23

Almindelige problemer i opgavebesvarelserne i miniSRP projektet i hold InfB23

Strukturen på besvarelsen svarer ikke til strukturen på opgaven

Det er et problem hvis strukturen på besvarelsen svarer ikke til strukturen på opgaven. Der er tre delopgaver i miniSRP opgaven. Det kan nogle gange være svært at se i hvilket eller hvilke afsnit I er ved at svare på den første, den anden og den tredje delopgave.

I strukturerer opgavebesvarelsen ofte med op til ca. otte til ti afsnit og måske har intet af dem en overskrift (rubrik) som svarer direkte til en af delopgaverne. Det bliver således en ekstra opgave for læseren (mig, Karl) at analysere og finde hvor I faktisk besvarer de enkelte delopgaver.

I må selvfølgelig gerne både lave et indledende afsnit, en analyse, en diskussion og en konklusion, -men lav gerne også tydelige afsnit hvor I direkte besvarer de tre delspørgsmål. Hvis du har valgt at skrive om Linus Torvalds, så kunne disse overskifter eventuelt være følgende:

Det er også en god service for læseren at gengive selve formuleringen af delopgaven ordret i begyndelsen af det afsnit hvor du besvarer opgaven. Således kunne det afsnit hvor du besvarer den første delopgave ovenfor eventuelt begynde på følgende måde:

Redegørelse for Linus Torvalds virke (overskriften!)

I dette afsnit vil jeg besvare den første delopgave i denne miniSRP opgave. Delopgaven lyder som følger.

"Redegør for personens virke og hvad der særligt kendetegner hans eller hendes IT-komponenter. Relatér bl.a. til hvor 
udviklet computeren var på den tid de (personen, altså den person du har valgt) virkede."

Linus Torvalds var … og så skriver du videre ...

Fokus på at besvare alle dele af delopgaven

Nogle gange er delopgaverne sammensat af flere dele. Man kan sige at der kan være flere separate delspørgsmål i delopgaven som kræver individuel behandling/besvarelse. Det kan i være nødvendigt at analysere deloopgavens tekst grundigt for at være sikker på ikke at undlade vigte dele af besvarelsen.

I eksemplet ovenfor skal der både redegøres for personens virke og det som særligt kendetegner hans (Linux Torvalds) IT-komponenter (tools eller produkter, men vi bruger her begrebet komponent som har en særlig betydning i teknologifaget), og så skal vi når vi gør det relatere til hvor udviklet computeren var på den tid hvor Linus Torvalds virkede.

For det første så virker han stadig, så vi skal altså på en eller anden måde inddrage viden om og/eller en beskrivelse af hvor udviklede computere har været i perioden fra ca. den tid hvor Linus begyndte at bruge computere, eller i hvert fald fra han publiserede den første version af Linux, frem til i dag.

Der er altså to ting vi skal redegøre for:

  1. hans virke og
  2. det som særligt kendetegner hans IT-komponenter

og vi skal i den redegørelse inddrage (relatere til) hvor udviklet computeren har været i tidsrummet fra Linus Torvalds begyndte at bruge computere og frem til i dag.

Det er selvfølgelig ikke nødvendigt at fortælle om alt muligt som Linus Trovalds har lavet eller om alle hans produkter (tools eller IT-komponenter) og du behøver ikke gøre rede for computerens udviklingshistorie i detaljer. Du udvælger selv fra dine kilder og prøver at skabe en sammenhængende tekst med en rød tråd som tilgodeser de to hovedkrav og bi-kravet om at relatere til computerens udvikling.

Anvendelse af billeder og andre visuelle elementer

Det er en god idé at bruge visuelle elementer som f.eks. tabeller, grafer, diagrammer, skærmbilleder eller fotografier. Det gør teksten ofte mere interessant at læse og det kan være nødvendigt for at forklare og illustrere nogle aspekter eller forhold i opgavebesvarelsen.

Hvis man bruger f.eks. et billed/fotografi, så skal det anføres tydeligt hvor det kommer fra og det er en god idé også at nævne hvilken licens ophavsmanden har valgt at bruge for vores anvendelse af billedet. Hvis du selv har lavet billedet, så skal du selvfølgelig nævne det. Dette kan gøres på forskellige måder. Det kan gøres i teksten hvor billedet bruges, i en særlig konsultativ tekst under eller i nærheden af billedet og/eller i litteraturlisten eller i en særlig liste over billeder som er anvendt i opgavebesvarelsen.

Det som ofte giver bedst resultat, er selv at lave billedet (grafen, tabellen eller skitsen). Så er der ikke noget problem mht. licensen. Kravene eller forventningerne til kvaliteten bliver også mere moderate når I selv fremstiller materialet.

­Leg med TexMaker i HackerSpace, Gkb 18:01, 15 March 2016 (CET)




Dette er et eksemple på hvordan Latex kan bruges til at skrive tekster med matematiske symboler.

Når vi bruger Arduino til at opsamle data, f.eks. til at måle temperaturen med temperaturtransduceren LM335, så modtager vi måleresultaterne som heltal i området fra 0 til 1023. \\ Det er fordi A/D konverteren (ADC) i mikrokontrolleren ATmega328P bruger ti (10) bit til at representere den målte værdi.

Når vi bruger LM335 i serie med en modstanden R1 på 2k2 Ohm, så begrænses strømmen $I_{LM335_{max}}$ gennem LM335 til max $\frac{Ucc}{R1}$ \\ \\

$$ I_{LM335_{max}} = \frac{Ucc}{R1} $$

\paragraph{dette er lavet med paragraph}

Vi vil nu gerne omregne den målte værdi til temperatur angivet i grader på Celsius skalaen.

Vi vil UBIN \end{document}



Overvejelser om vigtigheden af layout og farver versus inholdets informationsindhold eller værdi, Gkb 08:58, 10 March 2016 (CET)


Her et et link til en andfen artikel i vores wiki, som altså er af typen MediaWiki dzfg zsdfgfsdfs drfg sdf.

Og her er et link til en ekstern webside.

Gkb 23:13, 11 August 2015 (CEST), Div interessante programmer

Interssante websider

Kerneproblemer og spike solutions for dem, nogle eksempler paa

Her er nogle eksempler paa typiske kerneproblemer ofte opstår i projekter i Programmering C eller Informationsteknologi B.

Husk at definitionen af et kerneproblem er at det er et problem som vi bliver nødt til at løse for at gennemføre vores projekt. Det handler om noget som vi ikke ved om vi kan lave, noget som vil kunne forhindre at vi kan lave vores produkt færdigt. Det handler ofte om hvordan man helt konkret anvender udviklingsværktøjerne til at implementere en bestemt funktionalitet i vores produkt (systemudviklingsprodukt, eller bare program).

Bemærk at et problem som er et kerneproblem for en udvikler (elev, vejleder) ikke behøver være noget problem for en anden udvikler. Alt efter vores tekniske indsigt og vores erfaringer af værktøjerne, så kan kerneproblemer i sin natur være af meget meget varierende kompleksitet.

Det kan også være interessant at notere sig at et projekt hvor du ikke møder nogen kerneproblemer måske ikke er så udfordrende for dig, - og du lærer måske ikke så meget nyt.

Så snart vi bliver bevidst om at vi i vores projekt har sådan et kerneproblem, så vil vi normalt hurtigst muligt lave en spike solution for det således at vi får konkret viden om hvordan vi kan løse dette kerneproblem med de værktøjer vi har valgt at bruge. Når vi har lavet sådan en hurtig løsning, så har vi reduceret den tekniske usikkerhed i vores projekt og det bliver derfor lettere at lave en tidsplan (resurseplan) for projektet, - og forhåbentlig muligt at gennemføre projektet.


Hvordan kan man placere en hexagon et tilfældigt stede i vinduet med Turtle modulet og Python?

Kerneproblem: Hvordan laver man 100 hexagoner på tilfældige steder i vinduet med Turtle modulet og Python?

import turtle
import random

turtle.setup(1.0, 1.0, 0, 0)

def hexagon(kantlaengd):
    for i in range(6):

def random_hexagons(n):
    for i in range(0, n):
        s = random.randint(50, 250)
        c = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
        w = turtle.window_width()
        h = turtle.window_height()
        turtle.setpos(random.randint(-w/2, w/2), random.randint(-h/2, h/2))

Kerneproblem: Hvordan afrundes tal i JavaScript?

Følgende test som er lavet i JavaScript konsolen i Chrome viser hvordan man kan styre antallet af cifre efter komma'en, dvs. efter decimalpunktet.

x = 1.23456789

Kerneproblem: Hvordan kan man ændre størrelsen på skildpadden og dens form (billed)?

Med udgangspunkt i eksemplet på hvordan man tegner en "turtle star", som er i begyndelsen af dokumentationen af Turtle modulet for Python 3.4,, laver vi nogle små ændringe vha. shape() og shapesize().

from turtle import *
color('red', 'yellow')
while True:
    if abs(pos()) < 1:

Kerneproblem: Hvordan kan vi ændre størrelsen på skildpaddens verden (turtle main window) i Turtle modulet?

Her er nogle eksperimenter med at bruge turtle.setup() til at ændre størrelsen af vinduet og flytte det til forskellige positioner på skærmen.

import turtle
import time
def tegn_en_box(a, b):
def udskriv_info_om_vinduet():
    tegn_en_box(10, 20)
    print("turtle.screensize(): ", turtle.screensize())
    print("turtle.window_width(): ", turtle.window_width(), "turtle.window_height(): ", turtle.window_height())
    print("turtle.pos(): ", turtle.pos())

turtle.setup(0.1,0.1, 0,0)

turtle.setup(0.3,0.6, 0,0)

turtle.setup(1.0, 1.0, 0,0)

turtle.setup(0.1, 0.1, 50, 50)

turtle.setup(300, 200, 50, 50)

Links: Blender som en videoeditor mm.

Links til info om gamle elever

Morten Overgaard Systems Developer (Systemudvikler) - Google Search mm

Installing Qt5 on lubuntu

Jeg soegte lidt og fandt info paa

Jeg installerede vistnok:

sudo add-apt-repository --yes ppa:ubuntu-sdk-team/ppa
sudo apt-get update -qq
sudo apt-get install qtbase5-dev qtdeclarative5-dev libqt5webkit5-dev libsqlite3-dev
sudo apt-get install qt5-default qttools5-dev-tools

Og saa:

sudo apt-get install qtcreator
sudo apt-get install qtcreator-dev

Jeg kunne nu starte QtCreator med kommandoen qtcreator. Men programmet virker ikke vaere sat i menu'en.

Her kommer ogsaa helel listen af kommandoer som jeg burgte i mine forsoeg:

   1  df
   2  java
   3  df
   4  sudo apt-get update
   5  sudo apt-get install qt5-default
   6  sudo apt-get install qttools5-dev-tools
   7  qt
   8  export
   9  export | grep qt
  10  export | grep qtc
  11  export | grep QT
  12  export | grep Qt
  13  export | grep cre
  14  export | grep q
  15  export | grep Q
  16  set
  17  set | grep Qt
  18  set | grep Q
  19  df
  20  qtchooser -- help
  21  qtchooser
  22  sudo apt-get install qtbase5-dev qtdeclarative5-dev libqt5webkit5-dev libsqlite3-
  23  sudo add-apt-repository --yes ppa:ubuntu-sdk-team/ppa
  24* sudo apt-get install qtbase libsqlite3-dev
  25  [A
  26  sudo apt-get install qtbase5-dev qtdeclarative5-dev libqt5webkit5-dev libsqlite3-dev
  27  df
  28  sudo apt-get update -qq
  29  sudo apt-get install qtbase5-dev qtdeclarative5-dev libqt5webkit5-dev libsqlite3-dev
  30  sudo apt-get install qt5-default qttools5-dev-tools
  31  qtconfig 
  32  ls
  33  sudo apt-get install qtcreator
  34  sudo apt-get install qt           
  35  sudo apt-get install qtcreator-dev
  36  sudo apt-get install qtcreator-
  37  sudo apt-get install qtc
  38  sudo dpkg --configure -a
  39  qtcreator
  40  history


Exercises, ideas

Pulblishing a photograph online

Some remarks about digital photographing: pixels, file formats and file size, bandwidth and load time.

Take a photo with your phone


Transfer the foto to a computer


Prepare the foto for publishing on the WWW


Upload the foto to a server

PyQt5, installation and running the demos

Installing PyQt5 in lubuntu 14.04.1 LTS

I used a live distro on USB stik with only 2 GB memory.

I believe that the processe was as follows:

  1. "sudo apt-get install python3-pyqt5"
  2. "sudo apt-get install pyqt5-examples"
  3. "sudo find / -name examples | grep pyqt" to locate the examples in /usr/share/doc/pyqt5-examples/examples

Here is a list of the some packages I installed:

aptitude search '~i!~M'
245  cat /var/log/dpkg.log | grep "\ install\ " > recently_installed_packages.txt

ubuntu@lubuntu:~$ cat recently_installed_packages.txt | grep pyq 2015-03-11 21:12:27 install pyqt5-dev:all <none> 5.2.1+dfsg-1ubuntu1 2015-03-11 21:52:57 install python3-pyqt5:i386 <none> 5.2.1+dfsg-1ubuntu1 2015-03-12 00:29:30 install pyqt5-examples:all <none> 5.2.1+dfsg-1ubuntu1 2015-03-16 20:05:49 install python3-pyqt5.qtquick:i386 <none> 5.2.1+dfsg-1ubuntu1 lubuntu@lubuntu:~$

Here is the command history of most of my experiments during the installation:

   1  python
   2  python3.4
   3  exit
   4  python
   5  python3
   6  pwd
   7  cd /usr/lib/python3.4/
   8  ls
   9  l
  10  ls -al
  11  find -name examples
  12  find -name exampl
  13  find -name exam
  14  find -name exa
  15  find -name ex
  16  find -name e
  17  find . -name e
  18  find . -name 
  19  find . -name xml
  20  find  -name xml
  21  find  -name xm
  22  find  -name 
  23  find
  24  find  | grep ex
  25  find  | grep exa
  26  find  | grep sam
  27  find  | grep sa
  28  ls
  29  find  | grep pyqt
  30  find  | grep qt
  31  python3
  32  sudo apt-get install pyqt5-dev
  33  pyversions 
  34  pyversions -v
  35  pyversions -h
  36  pyversions -d
  37  pyversions -s
  38  pyversions -r
  39  pyversions -i
  40  pyversions -v
  41  pydoc
  42  pydoc if
  43  pydoc else
  44  pydoc true
  45  pydoc True
  46  python
  47  history 
  48  sudo apt-get update
  49  history 
  50  pwd
  51  ls
  52  ls /
  53  ls /usr/
  54  ls /usr/lib/
  55  ls /usr/lib/python
  56  ls /usr/lib/python3
  57  ls /usr/lib/python3/dist-packages/
  58  ls /usr/lib/python3.4/
  59  ls /usr/lib/python3.4/py*
  60  ls /usr/lib/python3.4/pyq*
  61  ls /usr/lib/python3.4/
  62  ls /usr/lib/python3
  63  ls /usr/lib/python2.7/
  64  ls /usr/lib/python2.7/py*
  65  ls /usr/lib/python2.7/*.py
  66  sudo apt-get install python3-pyqt5
  67  sudo apt-get install python-er
  68  sudo apt-get install eric
  69  sudo apt-get install geany
  70  pydoc pyqt
  71  pydoc pyqt5
  72  pydoc in
  73  pwd
  74  cd /
  75  cd rofs/
  76  ls
  77  cd home/
  78  ls
  79  ls /al
  80  ls -al
  81  cd ..
  82  cd usr/
  83  ls
  84  cd lib/
  85  ls
  86  cd py3
  87  cd python3
  88  ls
  89  cd dist-packages/
  90  ls
  91  cd ..
  92  cd /etc/python3
  93  dir
  94  ls -al
  95  cat debian_config 
  96  ls -al
  97  cd ..
  98  ls
  99  cd /usr/bin
 100  ls
 101  cd python
 102  cd python3
 103  pwd
 104  ls p|
 105  ls p*
 106  ls py*
 107  ls py* -al
 108  ls python
 109  ls python*
 110  ls py* -al
 111  pydoc3 pyqt
 112  cd ..
 113  cd lib
 114  ls
 115  ls -al
 116  cd python3
 117  ls
 118  ls ../python3.4/
 119  ls
 120  cd dist-packages/
 121  ls
 122  dir
 123  ls -al
 124  cd PyQt5/
 125  ls
 126  ls -al
 127  ls
 128  find | grep 
 129  find
 130  find | grep ex
 131  find | grep exa
 132  find | grep samp
 133  find | grep sam
 134  find | grep sa
 135  find | grep s
 136  df -h
 137  top
 138  dir
 139  ls -al
 140  cd uic
 141  ls
 142  cd Loader/
 143  ls
 144  cat 
 145  ls
 146  cd ..
 147  ls
 148  cat 
 149  cd ..
 150  ls
 151  top
 152  cd /usr/share/python3/
 153  ls
 154  ls -al
 155  find 
 156  ls -al
 157  cd dist/
 158  ls
 159  cat python3-sip 
 160  cd ..
 161  ls
 162  cat 
 163  ls
 164  cd ..
 165  ls
 166  cd doc
 167  ls
 168  cd pyqt5-examples/
 169  ls
 170  cd examples/
 171  ls
 172  cat README 
 173  ls
 174  find -name luncher
 175  find -name lunch
 176  find -name lunc
 177  find -name lun
 178  find -name lu
 179  find -name l
 180  find 
 181  find -name l
 182  find -name l*
 183  sudo find -name l*
 184  sudo find -name lun|
 185  sudo find -name lun*
 186  sudo find -name lu*
 187  sudo find -name l*
 188  ls
 189  ls ..
 190  ls .. -al
 191  python3
 192  %PYTHON_HOME%\Lib\site-packages\PyQt5\examples
 194  echo %PYTHON_HOME%
 195  print %PYTHON_HOME%
 196  path
 197  env
 198  env | grep py
 199  env | grep PY
 200  export
 201  export | grep py
 202  export | grep PY
 203  ls %PYTHON_HOME%\
 204  ls %PYTHON_HOME%
 205  cd  %PYTHON_HOME%
 206  pwd
 207  cd ..
 208  cd &
 209  cd /
 210  ls
 211  find nmt
 212  find mnt
 213  find --help
 214  find python
 215  find -r python
 216  find -R python
 217  man find
 218  find . python
 219  find .
 220  find -name python
 221  sudo find -name python
 222  sudo find -name python3
 223  pwd
 224  sudo find -name examples
 225  sudo find -name examples | grep py
 226  sudo find -name examples | grep pyq
 227  sudo apt-get install pyqt5-examples 
 228  sudo find -name examples | grep py
 229  sudo find -name examples 
 230  pwd
 231  history 
 232  ls
 233  python 
 234  python
 235  python3 
 236  python3 
 237  /usr/lib/i386-linux-gnu/qt5/bin/assistant
 238  sudo apt-get install python3-pyqt5.qtquick
 239  sudo find / -name examples | grep py
 240  sudo find / -name examples | grep pyq
 241  sudo find / -name examples | grep pyqt
 242  history 

The demo examples are in the location

 225  sudo find -name examples | grep py
 226  sudo find -name examples | grep pyq
 227  sudo apt-get install pyqt5-examples 
 228  sudo find -name examples | grep py
 229  sudo find -name examples 

During the process I consulted the following webpages. Mostly for tutorials in how to use PyQt5, but also to solve installation problems:

  1. pyqt5 tut - Google Search mm

lubuntu, python3 home - Google Search mm


pyqt - Google Search mm

  13. lubuntu, python3 home - Google Search mm

importerror: no module named 'pyqt5.qtqml' - Sök på Google mm


Integrating Python and QML

When trying to run the example file I got

ImportError: No module named 'PyQt5.QtQml'

I googled the string "ImportError: No module named 'PyQt5.QtQml'" and found an example on the webpage Copying the code in the first yellow box, saving it in the file, and trying to run it resulted in the same error as before.

I googled now the string "QtQml missing from PyQt5" and found where I got the idea to try:

sudo apt-get install python3-pyqt5.qtquick

This worked in a way, -now I got the following error when trying to run the file

file:///home/lubuntu/examples/quick/tutorials/extending/chapter2-methods/app.qml:42:1: module "QtQuick" is not installed 
     import QtQuick 2.0 

I tried now running the file Now I got an error because the file example.qml was missing. After creating the file with the content in the second yellow box, running worked ok and I got the following output in the terminal:

The person's name is Bob Jones.
They wear a size 12 shoe.

(program exited with code: 0)
Press return to continue

User Stories

Parsing af en tekstfil med awk, Gkb 23:40, 25 January 2015 (CET)

Jeg har følgende tekst i en fil og vil gerne have kolonen med forkortelsern i en fil for sig og kolonen med forklaringerne i en anden fil.

lubuntu@lubuntu:~$ cat ascii_tabel_kopieret_fra_den_danske_wikipediaartikel.txt 
Kopieret fra

0000 0000 	0 	00 	NUL 	Null character
0000 0001 	1 	01 	SOH 	Start of Header
0000 0010 	2 	02 	STX 	Start of Text
0000 0011 	3 	03 	ETX 	End of Text
0000 0100 	4 	04 	EOT 	End of Transmission
0000 0101 	5 	05 	ENQ 	Enquiry
0000 0110 	6 	06 	ACK 	Acknowledgement
0000 0111 	7 	07 	BEL 	Bell
0000 1000 	8 	08 	BS 	Backspace
0000 1001 	9 	09 	HT 	Horizontal Tab
0000 1010 	10 	0A 	LF 	Line feed
0000 1011 	11 	0B 	VT 	Vertical Tab
0000 1100 	12 	0C 	FF 	Form feed
0000 1101 	13 	0D 	CR 	Carriage return
0000 1110 	14 	0E 	SO 	Shift Out
0000 1111 	15 	0F 	SI 	Shift In
0001 0000 	16 	10 	DLE 	Data Link Escape
0001 0001 	17 	11 	DC1 	Device Control 1 – oft. XON
0001 0010 	18 	12 	DC2 	Device Control 2
0001 0011 	19 	13 	DC3 	Device Control 3 – oft. XOFF
0001 0100 	20 	14 	DC4 	Device Control 4
0001 0101 	21 	15 	NAK 	Negative Acknowledgement
0001 0110 	22 	16 	SYN 	Synchronous Idle
0001 0111 	23 	17 	ETB 	End of Trans. Block
0001 1000 	24 	18 	CAN 	Cancel
0001 1001 	25 	19 	EM 	End of Medium
0001 1010 	26 	1A 	SUB 	Substitute
0001 1011 	27 	1B 	ESC 	Escape
0001 1100 	28 	1C 	FS 	File Separator
0001 1101 	29 	1D 	GS 	Group Separator
0001 1110 	30 	1E 	RS 	Record Separator
0001 1111 	31 	1F 	US 	Unit Separator
0111 1111 	127 	7F 	DEL 	Delete

Jeg løste dette i nogle trin med awk. Det er sikkert muligt at gøre det på en smartere måde, men denne løsning udviklede sig ud fra et par eksempler på to websider, X og X. Jeg forsøgte ikke at læse dokumentationen for awk, men forsøgte at bygge løsningen ved hjælp af flere forsøg (mikro-iterationer), hvor jeg kun ændrede en lille detalje af gangen. I slutningen af denne postering viser jeg den del af kommando-historien som er relevant for opgaven. Flere kommandoer fjærnet pga. fejl-stavning eller gemtageæse, men listen viser hvordan jeg byggede min forståelse af hvordan awk kunne bruges til at løse opgaven. Den iterative arbejdstilgang kan tydeligt ses.

Mikro-iterationer kalder jeg det, når jeg hurtigt afprøver flere måder at skrive en kommando på, observerer resultatet, evaluerer og stiller nye krav, planlægger og designer og implementerer, dvs. skriver en ny kommando, og tester den ved at eksekvere den. Helle denne mikro-iteration kan tage mindre end 10 sekunder. Nogle gange kræves der læsning af diverse information i hjælpfiler eller på websider for at planlægge og designe implementeringen af kravene til næste mikro-prototype, og så kan processen tage meget længere tid, minuter eller måske enda timer.

Her følger nu løsningen trin for trin.

Trin 1

  89  awk  '{print substr($0, index($0 , $5))}'  ascii_tabel_kopieret_fra_den_danske_wikipediaartikel.txt > forkortelser_og_forklaringer.txt
  90  awk  '{print $2}'  forkortelser_og_forklaringer.txt  > forkortelser.txt
  92  cat forkortelser.txt 
  94  ls *.txt
  95  cat forkortelser_og_forklaringer.txt 

Trin 2

Trin 3

Trin 4


   44  awk '{print $1}' ascii_tabel_kopieret_fra_den_danske_wikipediaartikel.txt 
   45  awk '{print $2}' ascii_tabel_kopieret_fra_den_danske_wikipediaartikel.txt 
   46  awk '{print $3}' ascii_tabel_kopieret_fra_den_danske_wikipediaartikel.txt 
   47  awk '{print $5}' ascii_tabel_kopieret_fra_den_danske_wikipediaartikel.txt 

   58  awk '{print $5, "[ \t]+\\|[ \t]+", $6}' ascii_tabel_kopieret_fra_den_danske_wikipediaartikel.txt 
   59  awk '{print $5, "\t", $6}' ascii_tabel_kopieret_fra_den_danske_wikipediaartikel.txt 
   60  awk '{print $5, $6}' ascii_tabel_kopieret_fra_den_danske_wikipediaartikel.txt 
   61  awk '{print $5, "\t", $6}' ascii_tabel_kopieret_fra_den_danske_wikipediaartikel.txt 
   62  awk  '{$1="", $2=""; print $1="", $2="", $5, "\t", $6}' ascii_tabel_kopieret_fra_den_danske_wikipediaartikel.txt 
   63  awk  '{$1="" $2=""; print $1="", $2="", $5, "\t", $6}' ascii_tabel_kopieret_fra_den_danske_wikipediaartikel.txt 
   64  awk  '{$1=""; print $1="", $2="", $5, "\t", $6}' ascii_tabel_kopieret_fra_den_danske_wikipediaartikel.txt 
   65  awk  '{$1=""; print $1="", $2="", $5, "\t", $0}' ascii_tabel_kopieret_fra_den_danske_wikipediaartikel.txt 
   66  awk  '{$1="" $2=""; print $1="", $2="", $5, "\t", $0}' ascii_tabel_kopieret_fra_den_danske_wikipediaartikel.txt 
   67  awk  '{$1="", $2=""; print $1="", $2="", $5, "\t", $0}' ascii_tabel_kopieret_fra_den_danske_wikipediaartikel.txt 
   68  awk  '{$1=""; $2=""; print $1="", $2="", $5, "\t", $0}' ascii_tabel_kopieret_fra_den_danske_wikipediaartikel.txt 
   69  awk  '{$1=""; $2=""; $3=""; print $1="", $2="", $5, "\t", $0}' ascii_tabel_kopieret_fra_den_danske_wikipediaartikel.txt 
   70  awk  '{$1=""; $2=""; print $1="", $2="", $5, "\t", $0}' ascii_tabel_kopieret_fra_den_danske_wikipediaartikel.txt 
   71  awk  '{$1=""; $2=""; $3=""; print $1="", $2="", $5, "\t", $0}' ascii_tabel_kopieret_fra_den_danske_wikipediaartikel.txt 
   72  awk  '{$1=""; $2=""; $3=""; print $0}' ascii_tabel_kopieret_fra_den_danske_wikipediaartikel.txt 
   73  awk  '{$1=""; $2=""; $3=""; $4="";print $0}' ascii_tabel_kopieret_fra_den_danske_wikipediaartikel.txt 
   74  awk  '{$1=""; $2=""; $3=""; $4=""; $5=""; print $0}' ascii_tabel_kopieret_fra_den_danske_wikipediaartikel.txt 
   75  awk  '{$1=""; $2=""; $3=""; $4=""; $5=""; print $0}' ascii_tabel_kopieret_fra_den_danske_wikipediaartikel.txt > t.txt
   76  cat t.txt 
   77  awk  '{print $1}'  t.txt
   78  awk  '{print $0}'  t.txt
   79  awk  '{print $1;$1="";print $0}'  t.txt
   80  awk  '{print $0}'  t.txt
   81  awk  '{print substr($0, index($0 , $3)}'  t.txt
   82  awk  '{print substr($0, index($0 , $3))}'  t.txt
   83  awk  '{print substr($0, index($0 , $3))}'  ascii_tabel_kopieret_fra_den_danske_wikipediaartikel.txt 
   84  awk  '{print substr($0, index($0 , $5))}'  ascii_tabel_kopieret_fra_den_danske_wikipediaartikel.txt 
   85  awk  '{print substr($0, index($0 , $6))}'  ascii_tabel_kopieret_fra_den_danske_wikipediaartikel.txt 
   86  awk  '{print substr($0, index($0 , $6))}'  ascii_tabel_kopieret_fra_den_danske_wikipediaartikel.txt > forklaringer_paa_forkortelser.txt
   87  cat forklaringer_paa_forkortelser.txt 
   88  awk  '{print substr($0, index($0 , $5))}'  ascii_tabel_kopieret_fra_den_danske_wikipediaartikel.txt
   89  awk  '{print substr($0, index($0 , $5))}'  ascii_tabel_kopieret_fra_den_danske_wikipediaartikel.txt > forkortelser_og_forklaringer.txt
   90  awk  '{print $2}'  forkortelser_og_forklaringer.txt  > forkortelser.txt
   92  cat forkortelser.txt 
   94  ls *.txt
   95  cat forkortelser_og_forklaringer.txt 
   96  cat forkortelser.txt 

  106  python "f = file('forkortelser.txt', 'r')\nfor l in f:\n  print l\nf.close()"
  108  cat forkortelser_og_forklaringer.txt 

Problemer med at installere en SSH server (sshd) i lubuntu 14.04.1 LTS

Jeg ville installere en SSH server i en live lubuntu 14.04.1 LTS. Jeg fulgte i grove traek den vejledning som findes paa foelgende websider:

Jeg proevede flere forskellige maader at starte serveren med og uden komplet path og fra forskellige mapper, men uden resultat. Foelgende kommando virker dog have started den, og eventuelt paa korrekt maade. Det ser nemlig ikke ud for at jeg har brugt nogen detaljeret viden om hvor servicen ligger, hverken conf filen eller sshd filen. Det skal testes igen, og maaske er det saa en god idee at bruge tidssvarende dokumentation.

lubuntu@lubuntu:/etc/ssh$ sudo service ssh restart
stop: Unknown instance: 
ssh start/running, process 10001

Det blev jeg klar over naar jeg fik foelgende fejl.

lubuntu@lubuntu:/etc/init$ sudo service ssh start 
start: Job is already running: ssh

Nu mistaenkte jeg at servicen (demonen sshd) faktisk var startet, og det var den.

lubuntu@lubuntu:/etc/init$ ps -A | grep ssh
 2385 ?        00:00:00 ssh-agent
 8979 ?        00:00:00 ssh-agent
 9062 ?        00:00:00 ssh-agent
10001 ?        00:00:00 sshd

Jeg testede nu om jeg kunne logge ind via den nystartede service, og det gik godt.

lubuntu@lubuntu:~$ ssh ftp@localhost
The authenticity of host 'localhost (' can't be established.
ECDSA key fingerprint is bd:7e:ae:3c:56:c4:75:f0:0b:97:94:ba:ea:50:63:33.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
ftp@localhost's password: 
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-32-generic i686)

 * Documentation:

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

ftp@lubuntu:~$ ls
ftp@lubuntu:~$ whoami

Test af rsync til at lave backup

Her er et lille shell script som jeg brugte til at teste kommandoen rsync.

#Backup af learner's home directory and all subdirectories
cd /home
sudo rsync -avz learner data/learner

#Her er resultaterne af de to foerste koersler af kommandoen.
#Koersel 1: Den tog ca. 5 min
#sent 965587807 bytes  received 84846 bytes  3312770.68 bytes/sec
#total size is 1143107915  speedup is 1.18
#Koersel 2: Den tog ca. 5 sek
#sent 4257362 bytes  received 930 bytes  1703316.80 bytes/sec
#total size is 1144897136  speedup is 268.86
#Forberedelse for eksekvering af scriptet
#Scriptet skal eksekveres fra /home og det kan flytes med:
#sudo cp ..
#Scriptet goeres eksekverbart med:
#sudo chmod 755
#Og så kan det eksekveres med:
#sudo ./


Fibonacci tal, Python, rekursive funktioner, Gkb 18:01, 2 December 2014 (CET)

"Search track" i forbindelse med math elementet i MediaWiki, Gkb 10:52, 7 November 2014 (CET)

  1. ~
  2. ~~
  3. Gkb
  4. Gkb 10:51, 7 November 2014 (CET)
  5. 10:51, 7 November 2014 (CET)
  6. 10:51, 7 November 2014 (CET)~
  7. 10:51, 7 November 2014 (CET)~~

Følgende markup virker ikke i vores wiki. Vi kan ændre det, hvem vil?

<math> f(x) = x^2\,</math>

Her er min søge-vej (search track?) som jeg gik når jeg i dag hurtigt studerede igen hvordan vi kan rendere matematiske formler i vores wiki.

Extension:Math - MediaWiki mm


Her er et udkast til et program til at undersøge frekvensen af cifrene i store tal. Se gerne
#Karl Bjarnason, 2014-10-03
#With this program you can experiment with various expressions and count the
#number of zeros, ones, twos and so on, in the resulting value.

#n_expression = "1234567890"
#n_expression = "1234567890"
#n_expression = "1234567890"
#n_expression = "0000000000"
#n_expression = "17**137"
n_expression = "137317**13731"
n_string =str(eval(n_expression))

digit_frequencies = []
for i in range(10): digit_frequencies.append(0)

print digit_frequencies
for digit in n_string:
  if   digit == "0": digit_frequencies[0] += 1
  elif digit == "1": digit_frequencies[1] += 1
  elif digit == "2": digit_frequencies[2] += 1
  elif digit == "3": digit_frequencies[3] += 1
  elif digit == "4": digit_frequencies[4] += 1
  elif digit == "5": digit_frequencies[5] += 1
  elif digit == "6": digit_frequencies[6] += 1
  elif digit == "7": digit_frequencies[7] += 1
  elif digit == "8": digit_frequencies[8] += 1
  elif digit == "9": digit_frequencies[9] += 1

print "Digit frequencies for the value of the expression ", n_expression, "which has ", len(n_string), "digits."
print digit_frequencies


asdflkjh lkajsdhf lkajsdfh lkajsdhflk jasdf

ölaksdjf ölaksjdfö lakj sdöflk

asdf asdfasdf

  1. Här är lidt text på svenska.
  2. Og hér er teksti á íslensku.

QUCS for Ubuntu 13.10, Gkb 17:05, 17 September 2014 (CEST)

Jeg skulle bruge QUCS på en Ubuntu 13.10 og fandt at default sources ikke indeholdt QUCS. Problemet blev løst ved at tilføje et personliget pakke arkiv, ppa, til mine sources. Det er ppa:fransschreuder1/qucs fra Frans Schreuder. Se her Kommandoen til at tilføje arkivet er.

sudo apt-add-repository ppa:fransschreuder1/qucs

Og efter det var det bare en normal installation med.

sudo apt-get update


sudo apt-get install qucs

Installationen gik godt og jeg testede programmet ved at tegne en spændingsdeler og lave en DC simulering. Her er et skærmbilled som viser resultatet.


Test af Turtle modulet, Gkb 23:14, 9 September 2014 (CEST)

import turtle
t1 = turtle.Turtle()
t2 = turtle.Turtle()

ts = turtle.Screen()




def draw_patch(t, x, y, side_length):
    t.goto(x, y)
    for i in range(4):

for i in range(2):
    for j in range(3):
        draw_patch(t1, 100 + i*10, 200 + j*10, 10)
        #if  t1.fillcolor=='black':
        #    t1.fillcolor='white'


Qucs, installering af, på vores Edubuntu terminalserver i MediaLab, Gkb 19:31, 29 August 2014 (CEST) fandt jeg en beskrivelse af hvordan man kan installere Qucs i Ubuntu 12.10, men Qucs kom ikke med i default sources for Ubuntu 12.10 fordi Qt3 ikke er med i Ubuntu 12.10, men Qucs brugte vistnok netop Qt3. Men nu har Frans Schreuder tilsyneladende lavet en version af Qucs som bruger Qt4 og stillet den til rådighed for os i en såkaldt PPA (Personal Package Archive). Når man tilføjer dette arkiv, ppa:fransschreuder1/qucs, til sources i Ubuntu, så kan man installere på normal måde med apt-get install. Han postede denne info altså, men der er en lille fejl i den første kommando, -det sidste bindestrege manglede i apt-add-repository. Når den var rettet, så kørte installationen hurtigt.

sudo apt-add-repository ppa:fransschreuder1/qucs
sudo apt-get update
sudo apt-get install qucs

Jeg fandt Qucs i Education menuen i min Ubuntu (Edubuntu, som vi afprøver som en terminalserver i MediaLab). Jeg startede den og afprøvede lidt. Tegnede en spændingsdeler og lavede en DC simulering. Resultaterne ses i følgende screenshoot. Jeg har halveret størrelsen på det med convert (en del af ImageMagic) og så har jeg kopieret billedet med scp direkte til min mappe for billeder på mit userID på

Jeg bruger så MediaWiki's syntax til at linke til eksterne filer på følgende måde til at vise det lille billed direkte i wiki-artiklen og til at gøre det muligt at klikke på det til at få det fulde skærmbilled vist.


Men her er altså billedet som viser at Qucs kunne installeres på vores Edubuntu terminalserver og bruges til at lave en enkel sumulering af en spændingsdeler.


Links i forbindelse med Qucs og HTML mm., Gkb 16:53, 29 August 2014 (CEST)

Og her er lidt Javascript kode hvor jeg testede nogle ideer lånt fra de ovenfor anførte kilder. Jeg brugte den nye Scratchpad i Firefox, Lovende!

 * This is a JavaScript Scratchpad.
 * Enter some JavaScript, then Right Click or choose from the Execute Menu:
 * 1. Run to evaluate the selected text (Ctrl+R),
 * 2. Inspect to bring up an Object Inspector on the result (Ctrl+I), or,
 * 3. Display to insert the result in a comment after the selection. (Ctrl+L)
function sayHi(){
  alert("Hiiiiii!"+document.title+" "+document.body+" "+document.getElementById("newDiv"));
//document.write('Programming Thymio II - Thymio & Aseba');

function addElement () { 
  // create a new div element 
  // and give it some content 
  var newDiv = document.createElement("div"); 
  var newContent = document.createTextNode("Hi there and greetings!"); 
  newDiv.appendChild(newContent); //add the text node to the newly created div. 

  // add the newly created element and its content into the DOM 
  var currentDiv = document.getElementById("div1"); 
  document.body.insertBefore(newDiv, currentDiv); 


Links igen, Gkb 16:58, 2 May 2014 (CEST)


Gkb 13:36, 22 April 2014 (CEST)

Gkb 12:40, 19 March 2014 (CET)

Gkb 12:40, 19 March 2014 (CET)

persona metoden - Google Search mmm

<A HREF="" ADD_DATE="1395228107" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABlUlEQVQ4jZ2TP2uTURSHn/ve+4YSleokGbQU/+HQUqui0ZaSDEIUirg56NI6uEn1I7RLv0MElWwBUbO4CVk0JQmoQwTjoiZBi7YkmrQ37z1dpDbkhTY924Xze875nXOPmllaT3mi00oRY4AQoe5UMOftRwygFDFPdNqEiT0FNy/4eAqunNaMHdO8LFrefg5Y+RL0QsLo95IRtAfZguVRpkOl5jh8QPWIt4uFAVLjhl8tAcAJ5MqW+CkTaiUU4ATGj+vtd2NdaKy5vQOe5C3XxgyXTmgODSkSZw3LuY29A14ULQ+etYkd8Xi+EOXD14BKbYAOAD7VHbmSpdkWZicNw1EVmqeSS/+mtSMun9RMjGhWW0I0ArOTPn82hIeZDqvN3vS+Dm7HfW5d9Em/2ST7zvI0b7n/uI0TuDsd2d3C9QlDoRpgd6z8Z1N4VeoSCdlkH6D6w3HjnOHo8H/PRsP5UU2u3N19BgeHFHeu+kydMaz9FWq/HR0Lr993+fit/yeqxGKrtp9jAhCh4SHBvAiNwdV8R4K5Le1xlvOY9nnhAAAAAElFTkSuQmCC">persona metoden - Google Search</A>
<A HREF="" ADD_DATE="1395228107" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAtklEQVQ4jWNkYGBg+P///38GMgAjIyMjI0zz5u8LGDZ/W0iURl+ueAZfzgQGBgYGBhaY4LM/Dxhu/blAlAHP/tjD2UxEuxcHGDVgeBlgwu5AtCZktXADjNkcGDaL3mdwYA/AqdGBPYBhs+h9BmM2JMv+YwFnfu7/7/NS4b/9C4H/9i8E/vu8VPh/5ud+bEr/wzMTOvj87wPDrC+NDAwMDAxpPPUMvEwCWF3FCHMF0QGArJmRkREArXdh9D8DBGUAAAAASUVORK5CYII="> - Personas</A>
<A HREF="" ADD_DATE="1395228107" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB1klEQVQ4jaWSP2tTYRTGfzf3vm/SpjRa2+TmXpt/ak0saTAohUwi4uYXcBBcxUlclX4GDSno4OYQ0NWQouImXVwcLApNzaKtpQiVapJ7j0M0ISaNgg+c4Tyc95znPO8xAOEQmEqDYeC1fhxWAr8aDMXRmCuL92qSq7yQ2UR6ZA0ggd40rbG07nWddJPsO1m+RTNMJk/3eBWeGlYw4xyXpcqa5CvPZW4+JYBYSkv26k3JXbslOhgSQM5cuiKph6/l/J2ymEp16wDCboa9uVMIEE4usNNs0Gm3ePe4PDhpsUQrYrOfv4wZnMBrtzGBlYMvn3DMFqH363xce4rX6Yw0y29uELGA+iO2N94CYDDmF/4FAQBTqQED/wbTUlg62E2OOfOSr9SlsNo3cFxEorYU7j+TpdWXEkudEGvCzfA1uoAvMJU4yU6zMXZ62E2zF8/hCYTTWczvu59XbOWjP6yzVX+C54028DcOdreJW21Cm2/YqlXhT4lHbEfiyxdFBYM9ztJaYssXZMZNjFqrn5hKS7FcE6e6Kedu3O3xheu3xa025OyDV6JCodGn3IPX7sry/T7ndwAh4HcwMIaeDHScno2KXSyJpXRfmWWJXSzJdNQeWuG/D+knXtrTyLOvcxIAAAAASUVORK5CYII=">Værdibyg</A>
<A HREF="" ADD_DATE="1395228107" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABuElEQVQ4jaWTTWsUQRCGn+qe2V1dMJegEDFCQGTRgKAogggawYtGUBA/CXgT/Qfe/SMe41lR1KMoQSEIQhQli4sYY9gks5PdnZnu8tBkWEHiSgoaqovup97q6hJVVbZh0eAmsMISsf8H8F5pn2uwUQgLnYKpdwuImH8CyhPtBw95KwdRlOkPizy9f3coBaaUPjHKhFtkJYdHjXFGxvYMBRANBqq0zl/ky+o3spHdnH32AmsUEdlawWYTvEC1VsHaKr7fI0+S4UsAZW3mHtL5zC6TQPqDl9OXhgcowM9PeByigCqSLrPe+k7hg0JVxRUF8/Mfef7kVRkT773mrRbJnVtk+TK/MmWpl5GpZT0apXnhMnF9ByIVTARiQExErWo51DgQ/kH39RugH4iiGGOJfEw1T8D1yDZypFYnFo+VnTg1eBtz9MhkAEiaEJQqqGAxeGMoHPjcUanUMVa4cfsac3PvmTzcYHzffkRMKKHbSeleuUo/a9LOHCt5TFcMzY4jvTnDqTPHOXbydPlwg60V70PuIu+zNHWCNVew6mK+ju3l+uxjrK399WIZG5zGTVdE/vC3MtnuOP8GyMHVBWdUfYMAAAAASUVORK5CYII=">Ny bog om personametoden</A>
<A HREF="" ADD_DATE="1395228107" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABuElEQVQ4jaWTTWsUQRCGn+qe2V1dMJegEDFCQGTRgKAogggawYtGUBA/CXgT/Qfe/SMe41lR1KMoQSEIQhQli4sYY9gks5PdnZnu8tBkWEHiSgoaqovup97q6hJVVbZh0eAmsMISsf8H8F5pn2uwUQgLnYKpdwuImH8CyhPtBw95KwdRlOkPizy9f3coBaaUPjHKhFtkJYdHjXFGxvYMBRANBqq0zl/ky+o3spHdnH32AmsUEdlawWYTvEC1VsHaKr7fI0+S4UsAZW3mHtL5zC6TQPqDl9OXhgcowM9PeByigCqSLrPe+k7hg0JVxRUF8/Mfef7kVRkT773mrRbJnVtk+TK/MmWpl5GpZT0apXnhMnF9ByIVTARiQExErWo51DgQ/kH39RugH4iiGGOJfEw1T8D1yDZypFYnFo+VnTg1eBtz9MhkAEiaEJQqqGAxeGMoHPjcUanUMVa4cfsac3PvmTzcYHzffkRMKKHbSeleuUo/a9LOHCt5TFcMzY4jvTnDqTPHOXbydPlwg60V70PuIu+zNHWCNVew6mK+ju3l+uxjrK399WIZG5zGTVdE/vC3MtnuOP8GyMHVBWdUfYMAAAAASUVORK5CYII=">Personas (DK)</A>
<A HREF="" ADD_DATE="1395228107" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACgklEQVQ4jW2Ty0vjYBTFf4mxINH6irZYEaG2ahVEERcVG1wILgVd+DcKgo+9SBG0FamElkiVQmyCLYr4ao3S5JtFxzgzztldOPdw7rn3SqINJEniX1xcXGAYBpqmsb6+Tmdn5w+ODPy3udVqcXZ2xsvLC5VKBdM0f3ACgT/x+fmJ4zjIsoyqqgghACiVSti2TS6Xw7KsgC+J34xWq0U+n+f6+pqJiQn6+vqIRqMUi0UALi8vg6ZIJML29va3g0ajwc7ODufn58RiMSzLwnVdXNdF13VUVf2vfQDZdV0ODg7wPC+wGgqFOD09pV6v8/7+Ti6X+zFmIJDNZpmcnMT3fWS5HYnjOHR3dzM0NMTJyQme57G4uMjg4CAAT09P3N3dtQXi8TiFQoG5ubkgsK6uLnzfZ3d3l3K5jK7rLC8vk0gkABBCsL+/T71eR3Ech1QqRaFQYH5+nmKxyNbWFv39/biuS0dHB6FQiI+PD8rlcmD9q1aSySSmaTIyMoJt26ysrDAwMIBt2xiGgaIoAFiWRbPZ/F6fJDE6OoqiaRqmaZJOp6nVaqRSKR4eHtjb2wuClSQJIQRCCDRNY2pqimQySTgcRlEUhUwmw83NDdPT08iyjGEYeJ5HJBLB933u7+9RVZW1tTV83+f4+JjX11dWV1fbdzAzM0OtVmN8fBwhBJVKhZ6eHjY3NwmHwwBsbGzw/PzM4eEhkiQFq1S+LC4tLdHb24tpmjQaDdLpNLIsc3t7C0A2m6VarTI7O0s8Hufx8fFbAGBhYYGrqyuOjo6QJIlEIoEQIsihWq0Si8XQdR3XdYlGo3//whfe3t5oNpsMDw8DkM/nKZVKjI2Nkclkfrz0L5H7Nb06+fC5AAAAAElFTkSuQmCC">søg: »lene nielsen« | Aarhus Universitetsforlag</A>
<A HREF="" ADD_DATE="1395228107" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACgklEQVQ4jW2Ty0vjYBTFf4mxINH6irZYEaG2ahVEERcVG1wILgVd+DcKgo+9SBG0FamElkiVQmyCLYr4ao3S5JtFxzgzztldOPdw7rn3SqINJEniX1xcXGAYBpqmsb6+Tmdn5w+ODPy3udVqcXZ2xsvLC5VKBdM0f3ACgT/x+fmJ4zjIsoyqqgghACiVSti2TS6Xw7KsgC+J34xWq0U+n+f6+pqJiQn6+vqIRqMUi0UALi8vg6ZIJML29va3g0ajwc7ODufn58RiMSzLwnVdXNdF13VUVf2vfQDZdV0ODg7wPC+wGgqFOD09pV6v8/7+Ti6X+zFmIJDNZpmcnMT3fWS5HYnjOHR3dzM0NMTJyQme57G4uMjg4CAAT09P3N3dtQXi8TiFQoG5ubkgsK6uLnzfZ3d3l3K5jK7rLC8vk0gkABBCsL+/T71eR3Ech1QqRaFQYH5+nmKxyNbWFv39/biuS0dHB6FQiI+PD8rlcmD9q1aSySSmaTIyMoJt26ysrDAwMIBt2xiGgaIoAFiWRbPZ/F6fJDE6OoqiaRqmaZJOp6nVaqRSKR4eHtjb2wuClSQJIQRCCDRNY2pqimQySTgcRlEUhUwmw83NDdPT08iyjGEYeJ5HJBLB933u7+9RVZW1tTV83+f4+JjX11dWV1fbdzAzM0OtVmN8fBwhBJVKhZ6eHjY3NwmHwwBsbGzw/PzM4eEhkiQFq1S+LC4tLdHb24tpmjQaDdLpNLIsc3t7C0A2m6VarTI7O0s8Hufx8fFbAGBhYYGrqyuOjo6QJIlEIoEQIsihWq0Si8XQdR3XdYlGo3//whfe3t5oNpsMDw8DkM/nKZVKjI2Nkclkfrz0L5H7Nb06+fC5AAAAAElFTkSuQmCC">Persona: Brugerfokuseret design | Aarhus Universitetsforlag</A>
<A HREF="" ADD_DATE="1395228107" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABuElEQVQ4jaWTTWsUQRCGn+qe2V1dMJegEDFCQGTRgKAogggawYtGUBA/CXgT/Qfe/SMe41lR1KMoQSEIQhQli4sYY9gks5PdnZnu8tBkWEHiSgoaqovup97q6hJVVbZh0eAmsMISsf8H8F5pn2uwUQgLnYKpdwuImH8CyhPtBw95KwdRlOkPizy9f3coBaaUPjHKhFtkJYdHjXFGxvYMBRANBqq0zl/ky+o3spHdnH32AmsUEdlawWYTvEC1VsHaKr7fI0+S4UsAZW3mHtL5zC6TQPqDl9OXhgcowM9PeByigCqSLrPe+k7hg0JVxRUF8/Mfef7kVRkT773mrRbJnVtk+TK/MmWpl5GpZT0apXnhMnF9ByIVTARiQExErWo51DgQ/kH39RugH4iiGGOJfEw1T8D1yDZypFYnFo+VnTg1eBtz9MhkAEiaEJQqqGAxeGMoHPjcUanUMVa4cfsac3PvmTzcYHzffkRMKKHbSeleuUo/a9LOHCt5TFcMzY4jvTnDqTPHOXbydPlwg60V70PuIu+zNHWCNVew6mK+ju3l+uxjrK399WIZG5zGTVdE/vC3MtnuOP8GyMHVBWdUfYMAAAAASUVORK5CYII=">Personas posters</A>
<A HREF="" ADD_DATE="1395228107" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACgklEQVQ4jW2Ty0vjYBTFf4mxINH6irZYEaG2ahVEERcVG1wILgVd+DcKgo+9SBG0FamElkiVQmyCLYr4ao3S5JtFxzgzztldOPdw7rn3SqINJEniX1xcXGAYBpqmsb6+Tmdn5w+ODPy3udVqcXZ2xsvLC5VKBdM0f3ACgT/x+fmJ4zjIsoyqqgghACiVSti2TS6Xw7KsgC+J34xWq0U+n+f6+pqJiQn6+vqIRqMUi0UALi8vg6ZIJML29va3g0ajwc7ODufn58RiMSzLwnVdXNdF13VUVf2vfQDZdV0ODg7wPC+wGgqFOD09pV6v8/7+Ti6X+zFmIJDNZpmcnMT3fWS5HYnjOHR3dzM0NMTJyQme57G4uMjg4CAAT09P3N3dtQXi8TiFQoG5ubkgsK6uLnzfZ3d3l3K5jK7rLC8vk0gkABBCsL+/T71eR3Ech1QqRaFQYH5+nmKxyNbWFv39/biuS0dHB6FQiI+PD8rlcmD9q1aSySSmaTIyMoJt26ysrDAwMIBt2xiGgaIoAFiWRbPZ/F6fJDE6OoqiaRqmaZJOp6nVaqRSKR4eHtjb2wuClSQJIQRCCDRNY2pqimQySTgcRlEUhUwmw83NDdPT08iyjGEYeJ5HJBLB933u7+9RVZW1tTV83+f4+JjX11dWV1fbdzAzM0OtVmN8fBwhBJVKhZ6eHjY3NwmHwwBsbGzw/PzM4eEhkiQFq1S+LC4tLdHb24tpmjQaDdLpNLIsc3t7C0A2m6VarTI7O0s8Hufx8fFbAGBhYYGrqyuOjo6QJIlEIoEQIsihWq0Si8XQdR3XdYlGo3//whfe3t5oNpsMDw8DkM/nKZVKjI2Nkclkfrz0L5H7Nb06+fC5AAAAAElFTkSuQmCC">Aarhus Universitetsforlag</A>
<A HREF="" ADD_DATE="1395228107" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABfElEQVQ4jcWTMW/acBDFf2cMdlVDmo24jQpDM1hqBhQPVcbma5DPFXVOvwftkgqJNCZUwEA2FsA46WBk8ofrgNpCidRIqdQ3nu69d3dPJ6qqPAHWU8j/RMB+qNjv94njKZ73nHw+T5LcsrNTIggCROTvAo3GZy4vv1KtvsbzPK6vOxwcvCEIgu0J/rzhT4d1o3XXrf7lcqlRFNFsNrm7+44xC8bjMWmaUqmsJuh0vuE4DuVymVzOolQqUqvVCMMQezC44ezsA6rK8fE7fP8lFxdfSNN0w6lYLBKGR0wmExqNT1xdRbjuM+xerweA67rU63VEhMHghuFwuCGwu/uCk5P3qCrtdpvpNKHb7WIZYwCwrMcnmsuteo0x2L6/h6oym82Iojb7+6+Yz+dbJGPuieOY0WhEktyiqvi+jxhj9Pz8I61WiyzbJFarlV8xrqNQKHB4+JbT0zqiK2CMIcuyjZgsy0JEWCwWv2MTwXEcbNtGRFYCj17+Afz/Z/oBtDamseltVgMAAAAASUVORK5CYII=">Målgrupper | Dansk Byplanlaboratorium</A>
<A HREF="" ADD_DATE="1395228107"></A> </DL><p> </DL>

Gkb 13:31, 18 March 2014 (CET)

mendel 90 - Google Search mm

Gkb 01:24, 18 March 2014 (CET)

scemariobeskrivelse, persona - Google Search mmm

<A HREF="" ADD_DATE="1395101787" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABlUlEQVQ4jZ2TP2uTURSHn/ve+4YSleokGbQU/+HQUqui0ZaSDEIUirg56NI6uEn1I7RLv0MElWwBUbO4CVk0JQmoQwTjoiZBi7YkmrQ37z1dpDbkhTY924Xze875nXOPmllaT3mi00oRY4AQoe5UMOftRwygFDFPdNqEiT0FNy/4eAqunNaMHdO8LFrefg5Y+RL0QsLo95IRtAfZguVRpkOl5jh8QPWIt4uFAVLjhl8tAcAJ5MqW+CkTaiUU4ATGj+vtd2NdaKy5vQOe5C3XxgyXTmgODSkSZw3LuY29A14ULQ+etYkd8Xi+EOXD14BKbYAOAD7VHbmSpdkWZicNw1EVmqeSS/+mtSMun9RMjGhWW0I0ArOTPn82hIeZDqvN3vS+Dm7HfW5d9Em/2ST7zvI0b7n/uI0TuDsd2d3C9QlDoRpgd6z8Z1N4VeoSCdlkH6D6w3HjnOHo8H/PRsP5UU2u3N19BgeHFHeu+kydMaz9FWq/HR0Lr993+fit/yeqxGKrtp9jAhCh4SHBvAiNwdV8R4K5Le1xlvOY9nnhAAAAAElFTkSuQmCC">scemariobeskrivelse, persona - Google Search</A>
<A HREF="" ADD_DATE="1395101787" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAV0lEQVQ4jd2QwQ7AIAhDi/H/fxlPLrVZDXrb3gkoVAH4PAEgKQbl2qfarD1FHSznaZpcvNCcUIUNErRXlX4xvBxy/iCw2VMIfqyJ4Eys1t+KRZPje/2VAd4GEwy29KWEAAAAAElFTkSuQmCC">Scenario beskrivelse</A>
<A HREF="" ADD_DATE="1395101787" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB1klEQVQ4jaWTv0tqARzFj3otuKs0hSA4y4VosUjjCipB4NrY4uY/0J8gDkHRUBAJd41w8g9wEVQcdREu4R2LhsQft8vnDa/uq+cbHnWm7/cL5wzfc46AOHAK9Ph/9N45cb0P38VpBOhJ2tX30I+8vb3h+74kKRKJaHNzU4vFQpIUi8UUi8W0Wq0kSRsbGwqCQEEQSJLi8bg0HA45PDxEEpeXlwRBQKlUQhK3t7c8Pj6yt7dHoVDA8zweHh5IJBJUKhVGoxECcF0XwzBotVoAzGYzUqkUFxcXANi2zfPzMwDL5ZL9/X183wf4LQBwcnLCwcFB+J3r62uSyST39/fU6/Xw7jgOV1dX4R4KDAYDJNHtdgHwfZ90Oo1lWczn85BwdHTEbDYL9+jHO3d2dmTbthqNhiTJMAyVy2V5nifDMCRJg8FAlmXJNM0/Pnw2td1uE41GmUwmABwfH7O1tUWz2QSgWq3ied6XIEQAPhubyWSUz+dVLpfluq5eXl7kOI46nY7Ozs50c3PzNQl/R+vu7g7TNCkWiywWC56enjBNk2w2S7/fX4vimsBqtWJ7e5vz8/PwVqvVyOVya+QPgbUSjcdjgiAI99fXV6bT6b/4vR+XSfywzr8ATFvIBgseueAAAAAASUVORK5CYII=">Scenario - Wikipedia</A>
<A HREF="" ADD_DATE="1395101787" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABuElEQVQ4jaWTTWsUQRCGn+qe2V1dMJegEDFCQGTRgKAogggawYtGUBA/CXgT/Qfe/SMe41lR1KMoQSEIQhQli4sYY9gks5PdnZnu8tBkWEHiSgoaqovup97q6hJVVbZh0eAmsMISsf8H8F5pn2uwUQgLnYKpdwuImH8CyhPtBw95KwdRlOkPizy9f3coBaaUPjHKhFtkJYdHjXFGxvYMBRANBqq0zl/ky+o3spHdnH32AmsUEdlawWYTvEC1VsHaKr7fI0+S4UsAZW3mHtL5zC6TQPqDl9OXhgcowM9PeByigCqSLrPe+k7hg0JVxRUF8/Mfef7kVRkT773mrRbJnVtk+TK/MmWpl5GpZT0apXnhMnF9ByIVTARiQExErWo51DgQ/kH39RugH4iiGGOJfEw1T8D1yDZypFYnFo+VnTg1eBtz9MhkAEiaEJQqqGAxeGMoHPjcUanUMVa4cfsac3PvmTzcYHzffkRMKKHbSeleuUo/a9LOHCt5TFcMzY4jvTnDqTPHOXbydPlwg60V70PuIu+zNHWCNVew6mK+ju3l+uxjrK399WIZG5zGTVdE/vC3MtnuOP8GyMHVBWdUfYMAAAAASUVORK5CYII=">Et eksempel på en persona beskrivelse før og efter redigering</A>
<A HREF="" ADD_DATE="1395101787" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABuElEQVQ4jaWTTWsUQRCGn+qe2V1dMJegEDFCQGTRgKAogggawYtGUBA/CXgT/Qfe/SMe41lR1KMoQSEIQhQli4sYY9gks5PdnZnu8tBkWEHiSgoaqovup97q6hJVVbZh0eAmsMISsf8H8F5pn2uwUQgLnYKpdwuImH8CyhPtBw95KwdRlOkPizy9f3coBaaUPjHKhFtkJYdHjXFGxvYMBRANBqq0zl/ky+o3spHdnH32AmsUEdlawWYTvEC1VsHaKr7fI0+S4UsAZW3mHtL5zC6TQPqDl9OXhgcowM9PeByigCqSLrPe+k7hg0JVxRUF8/Mfef7kVRkT773mrRbJnVtk+TK/MmWpl5GpZT0apXnhMnF9ByIVTARiQExErWo51DgQ/kH39RugH4iiGGOJfEw1T8D1yDZypFYnFo+VnTg1eBtz9MhkAEiaEJQqqGAxeGMoHPjcUanUMVa4cfsac3PvmTzcYHzffkRMKKHbSeleuUo/a9LOHCt5TFcMzY4jvTnDqTPHOXbydPlwg60V70PuIu+zNHWCNVew6mK+ju3l+uxjrK399WIZG5zGTVdE/vC3MtnuOP8GyMHVBWdUfYMAAAAASUVORK5CYII=">10 steps to personas</A>
<A HREF="" ADD_DATE="1395101787" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABuElEQVQ4jaWTTWsUQRCGn+qe2V1dMJegEDFCQGTRgKAogggawYtGUBA/CXgT/Qfe/SMe41lR1KMoQSEIQhQli4sYY9gks5PdnZnu8tBkWEHiSgoaqovup97q6hJVVbZh0eAmsMISsf8H8F5pn2uwUQgLnYKpdwuImH8CyhPtBw95KwdRlOkPizy9f3coBaaUPjHKhFtkJYdHjXFGxvYMBRANBqq0zl/ky+o3spHdnH32AmsUEdlawWYTvEC1VsHaKr7fI0+S4UsAZW3mHtL5zC6TQPqDl9OXhgcowM9PeByigCqSLrPe+k7hg0JVxRUF8/Mfef7kVRkT773mrRbJnVtk+TK/MmWpl5GpZT0apXnhMnF9ByIVTARiQExErWo51DgQ/kH39RugH4iiGGOJfEw1T8D1yDZypFYnFo+VnTg1eBtz9MhkAEiaEJQqqGAxeGMoHPjcUanUMVa4cfsac3PvmTzcYHzffkRMKKHbSeleuUo/a9LOHCt5TFcMzY4jvTnDqTPHOXbydPlwg60V70PuIu+zNHWCNVew6mK+ju3l+uxjrK399WIZG5zGTVdE/vC3MtnuOP8GyMHVBWdUfYMAAAAASUVORK5CYII=">Ny bog om personametoden</A>
<A HREF="" ADD_DATE="1395101787"></A>
<A HREF="" ADD_DATE="1395101787" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABlUlEQVQ4jZ2TP2uTURSHn/ve+4YSleokGbQU/+HQUqui0ZaSDEIUirg56NI6uEn1I7RLv0MElWwBUbO4CVk0JQmoQwTjoiZBi7YkmrQ37z1dpDbkhTY924Xze875nXOPmllaT3mi00oRY4AQoe5UMOftRwygFDFPdNqEiT0FNy/4eAqunNaMHdO8LFrefg5Y+RL0QsLo95IRtAfZguVRpkOl5jh8QPWIt4uFAVLjhl8tAcAJ5MqW+CkTaiUU4ATGj+vtd2NdaKy5vQOe5C3XxgyXTmgODSkSZw3LuY29A14ULQ+etYkd8Xi+EOXD14BKbYAOAD7VHbmSpdkWZicNw1EVmqeSS/+mtSMun9RMjGhWW0I0ArOTPn82hIeZDqvN3vS+Dm7HfW5d9Em/2ST7zvI0b7n/uI0TuDsd2d3C9QlDoRpgd6z8Z1N4VeoSCdlkH6D6w3HjnOHo8H/PRsP5UU2u3N19BgeHFHeu+kydMaz9FWq/HR0Lr993+fit/yeqxGKrtp9jAhCh4SHBvAiNwdV8R4K5Le1xlvOY9nnhAAAAAElFTkSuQmCC">Jonathan Matthews, persona, scenarie, Lene Nielsen - Google Search</A>
<A HREF="" ADD_DATE="1395101787" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADJ0lEQVQ4jX2STWhcVQCFv3vfezPvzZu//DQ2NkypQ0iIsdEqjW2tuIgFJWiignWlpmKahS5cWBVRV4qCqFAL/iwUEVzoQjdStMQW0QqKZgzBWps0SWNiG8fM75v3Zu69LkqEbPzgcDiHszxorY0xxmx6NaiYq2hzavYZU1g+YTYJm2WjtdqytwHCsIFlWUx/P82RJyaYnDxK31CV1Y3TdLWncawUvy/NIpxLjN70IUq3EAiEsLCFEMTjLgAnz3zJ8oUVpn87TpDuIZPIUKrAj/PvUq0Z/HiMUniOrDvAJiJoBOb9L96mWi/zyVcfsHOXT1/vNaBaJFxB0rNoT/lk0w5GVIlzPRmvn/7cfraldiNKlQ0zcDjH5WKZ2/blaW+30TrCcy2ySY/OdAbLqtPV1kZXh089CFlePcfovmMM9kwi08kMzz78EvneDK5r0bt9mPH9Uzx48Gn6e+6gHDS5tW+CILS5UqzhxmP0X7ebXMcIYJBKKS6sF0hnUvxdLjOQu4XCws8s/XWRxw69jGt3cnDgEaKmzUY1olhqoLRhvfoLQkjsqbcOMz1zku6Oa6kERUr1Motr88zMn+WB24+itEW5vk6pFmBMgBQ2xtT44fxxWrqBPXbgIeaWC0StJs2mQkqbjN+F6yRwrBi1egPHdrFkGqUhaGi0VvhuD9tSe7HvHr6Pi0tLvP75i3iJGEbDKxPvEbYavPHZ86ys/wkInhp7B4CPv3mBy6UCoze/RtbfgajVa2bsyD18PXOK4ZE8Ulj4cQ9pCSr1dTJ+kpSfIunFiDk2nqvozYXctec5dnbcix01I2bPF/Clz+L8KjtynTSiOpYQuK5HI1IovUGlLnAdweCu7cRkkrAZXT2S0tpUaxWarYipVx/lu7nTdPe0IYXEkhLLkVgYsr7HYD7O+IEnGdx5P1JKbOkipRAkE0k6sp2M7D3EykIFQoeWatFoRoRhRDyWYCif4IbeDDfmx4k7Prb0EEKA1toopYzSyvxTKZoTn75pStWS+fbXaTP0eLe589ges1ZcM5eu/GQKix8ZrVtGa/2fMP/D2bkzZmHtj62l3hr/BT5xwVVkZLFFAAAAAElFTkSuQmCC">Personas</A>
<A HREF="" ADD_DATE="1395101787" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABwUlEQVQ4jaWTPW8TQRCGn9nb2/Wt7+JEsUkUBQUlThEooLdEEyklSJEoaSiJRMmfQP4XNEh0iIZ/QAE9VFQgIuRIWMaO7duhOPNhbNNkpNXMzup99M6uVlRVuULYvzePu085v/hGEYqqITJbs1qVz+dfuNc54ez00SLg+ZuX9McjsBacgTSpshNMIhggDiY475YDJLGQOQgW8gQyg9TAeagn4BXGg4T6Rlg+AolAzcBGUgEC2AC5F5oJZBr5nhlMblYAjIIHUgEn4JXUQx6UVg0KC8ZQnS0FIBCBkioD1kDuIs2iZCsryUSx03IVAIgGVH4/gksja9mE7WLMjXxCy0750Xf/cSCAAUSRRHAushYm7OZD9osRvaiUrv1n6oVLFFN1rWCdEnxJMxuzVx9wtD7gcljSOTxe4cAZcApWIAXvS9bDlOv1EUeNEV7g6+UDbu/eWuEgNeAFUkFSJbjIppvSzkcYoPvugLO73TnJvIPaDOAgteBUMaXyoVfj1cc2z45fs9O4NieZc6AJECpAjNDrW95+qjMcP+HF6XsON/f4N+YcNNKcfrxgJ7S4uXXAyX6Hh3fus100F4S/Qq76nX8CJcZ1bx/5BcMAAAAASUVORK5CYII="></A>
<A HREF="" ADD_DATE="1395101787" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADJ0lEQVQ4jX2STWhcVQCFv3vfezPvzZu//DQ2NkypQ0iIsdEqjW2tuIgFJWiignWlpmKahS5cWBVRV4qCqFAL/iwUEVzoQjdStMQW0QqKZgzBWps0SWNiG8fM75v3Zu69LkqEbPzgcDiHszxorY0xxmx6NaiYq2hzavYZU1g+YTYJm2WjtdqytwHCsIFlWUx/P82RJyaYnDxK31CV1Y3TdLWncawUvy/NIpxLjN70IUq3EAiEsLCFEMTjLgAnz3zJ8oUVpn87TpDuIZPIUKrAj/PvUq0Z/HiMUniOrDvAJiJoBOb9L96mWi/zyVcfsHOXT1/vNaBaJFxB0rNoT/lk0w5GVIlzPRmvn/7cfraldiNKlQ0zcDjH5WKZ2/blaW+30TrCcy2ySY/OdAbLqtPV1kZXh089CFlePcfovmMM9kwi08kMzz78EvneDK5r0bt9mPH9Uzx48Gn6e+6gHDS5tW+CILS5UqzhxmP0X7ebXMcIYJBKKS6sF0hnUvxdLjOQu4XCws8s/XWRxw69jGt3cnDgEaKmzUY1olhqoLRhvfoLQkjsqbcOMz1zku6Oa6kERUr1Motr88zMn+WB24+itEW5vk6pFmBMgBQ2xtT44fxxWrqBPXbgIeaWC0StJs2mQkqbjN+F6yRwrBi1egPHdrFkGqUhaGi0VvhuD9tSe7HvHr6Pi0tLvP75i3iJGEbDKxPvEbYavPHZ86ys/wkInhp7B4CPv3mBy6UCoze/RtbfgajVa2bsyD18PXOK4ZE8Ulj4cQ9pCSr1dTJ+kpSfIunFiDk2nqvozYXctec5dnbcix01I2bPF/Clz+L8KjtynTSiOpYQuK5HI1IovUGlLnAdweCu7cRkkrAZXT2S0tpUaxWarYipVx/lu7nTdPe0IYXEkhLLkVgYsr7HYD7O+IEnGdx5P1JKbOkipRAkE0k6sp2M7D3EykIFQoeWatFoRoRhRDyWYCif4IbeDDfmx4k7Prb0EEKA1toopYzSyvxTKZoTn75pStWS+fbXaTP0eLe589ges1ZcM5eu/GQKix8ZrVtGa/2fMP/D2bkzZmHtj62l3hr/BT5xwVVkZLFFAAAAAElFTkSuQmCC">Child-personas</A>
<A HREF="" ADD_DATE="1395101787" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADJ0lEQVQ4jX2STWhcVQCFv3vfezPvzZu//DQ2NkypQ0iIsdEqjW2tuIgFJWiignWlpmKahS5cWBVRV4qCqFAL/iwUEVzoQjdStMQW0QqKZgzBWps0SWNiG8fM75v3Zu69LkqEbPzgcDiHszxorY0xxmx6NaiYq2hzavYZU1g+YTYJm2WjtdqytwHCsIFlWUx/P82RJyaYnDxK31CV1Y3TdLWncawUvy/NIpxLjN70IUq3EAiEsLCFEMTjLgAnz3zJ8oUVpn87TpDuIZPIUKrAj/PvUq0Z/HiMUniOrDvAJiJoBOb9L96mWi/zyVcfsHOXT1/vNaBaJFxB0rNoT/lk0w5GVIlzPRmvn/7cfraldiNKlQ0zcDjH5WKZ2/blaW+30TrCcy2ySY/OdAbLqtPV1kZXh089CFlePcfovmMM9kwi08kMzz78EvneDK5r0bt9mPH9Uzx48Gn6e+6gHDS5tW+CILS5UqzhxmP0X7ebXMcIYJBKKS6sF0hnUvxdLjOQu4XCws8s/XWRxw69jGt3cnDgEaKmzUY1olhqoLRhvfoLQkjsqbcOMz1zku6Oa6kERUr1Motr88zMn+WB24+itEW5vk6pFmBMgBQ2xtT44fxxWrqBPXbgIeaWC0StJs2mQkqbjN+F6yRwrBi1egPHdrFkGqUhaGi0VvhuD9tSe7HvHr6Pi0tLvP75i3iJGEbDKxPvEbYavPHZ86ys/wkInhp7B4CPv3mBy6UCoze/RtbfgajVa2bsyD18PXOK4ZE8Ulj4cQ9pCSr1dTJ+kpSfIunFiDk2nqvozYXctec5dnbcix01I2bPF/Clz+L8KjtynTSiOpYQuK5HI1IovUGlLnAdweCu7cRkkrAZXT2S0tpUaxWarYipVx/lu7nTdPe0IYXEkhLLkVgYsr7HYD7O+IEnGdx5P1JKbOkipRAkE0k6sp2M7D3EykIFQoeWatFoRoRhRDyWYCif4IbeDDfmx4k7Prb0EEKA1toopYzSyvxTKZoTn75pStWS+fbXaTP0eLe589ges1ZcM5eu/GQKix8ZrVtGa/2fMP/D2bkzZmHtj62l3hr/BT5xwVVkZLFFAAAAAElFTkSuQmCC">Gathering requirements for a personal health management system</A>
<A HREF="" ADD_DATE="1395101787" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC/UlEQVQ4jXWSX2yTZRTGf9+/rQuTsa6bDspYO5OxZNGEuUZE45YQ6oUTIynoGnuxJV554wIGNXGNGQnBUJNxAVG3GZOBeLHEC8dwcAMKyYbEZgmsiulKFMYatdiufG2/fscLvv2BxCd5855z3uc87znvewAU1qA6u+LYGqADhhNzGYYRWMdZxcZ1dgX/g6Zt246phvGV4xqrB9XV1e1o2vTw8HAlgIiooVCoCXixoyMQAt4BwkDa5/dfctK0R9SfatycA84BnwG/A6bf3yKADAwMyNjYmEQiEQEkEAjsfESkp6fHA6R7w2GZmZmReDwug4ODApQnJiZKIrKyCidPnRJg1BHQVwro3BMMSjabXSGWRcSOxY5LPp8XEZHvJyfFsqxyJpMR4M9QKFS1voM9Z858IyJiJRIJGRo6IqZpSnJh4aGAbUtfX79MTU1JsVi0fT6vAB2w9m2ugpkHwOOpR1UVzGKJv5cWSczfBEVhZORLgsEg136+bieTVXS/0r9p7f7W7l3127skdTtVFgc5syDx2NuSGGqTmZ8uSTKVkqnz0wIv2w1d78q+j048t5r/aXxxQ/ubH9+Dl2Rk9Gv79NkJObDvDbl7BJHRZhnYgsAOofEtOzw0Lkcvzqe/m5cnAPRoVPRDzyrLJ2fvjKcjB97rj31hcWHOAJVn7M3sblWISTMvvP48G2sbreYWv+GqqPxh73YlG41GdaJRWXkHjl3/60bviUmp3Xu43LZrvwACNVJTgdC609bDn4g3ctQEtgJ8GwppCsD44d7advv0oYU0LYX6vv23M2rp4C9ZxXftrKZ5Nim3lkry/mtbrR3+VkPM9Gxbw60f7y0/+Xnw+Ny8DuCVc952f9sHPq/NBm2UGzWvGgdv1lJZB+VysQS20dW0bOx++jzZorvT7XZ3/vZHZhZ4KJCza9K/Lv57pSwVD1TV31AszF3mcurug7rKD22bKihz5755NfXPFskVrOLS/Zw7b5WSPAbdmQt9XaxO01x9nmpXt+Mbj3P+A7g0bQY01Nu+AAAAAElFTkSuQmCC">learnIT - IT University of Copenhagen</A>
<A HREF="" ADD_DATE="1395101787">10 trin til udvikling af personas | Hans KlysnerHans Klysner | User Experience Design</A>


--Gkb 13:50, 23 February 2014 (CET)

Online learning mm:


automated music generation, free program - Google Search mm

Se evt. specielt denne liste hos SourceForge:

Iterationsplanlægning nr. 1

Revision af komm. og resourseplanl.

User Stories

  1. Addition

Når jeg som en 6 år gammel bruger af spilet har valgt to tal, så forventer jeg at spillet viser mig summen af dem. Det er fordi så forventer jeg at jeg kan lære mig addition.

  1. afdasf
  2. asdf

Kravspecifikation og Testspecifikation nr 1

  1. Kravene for de valgte user stories.

1. Brugeren skal kunne vælge to cifre mellem 0 og 9, inklusive begge, og så skal spillet vise summen af de to tal.

  1. Testprocedur nr 1
    1. Forudsætninger:
      1. Brugeren har startet spillet og status på spillet er således at brugeren kan vælge de to cifre med musen.
    2. Testinstruktion
      1. Brugeren skal nu vælge tallenen 1 og 3.
      2. Det kontrolleres at spillet korrekt viser at summen bliver 3.


  • Realisering af designet, ved hjælp af de udviklingsværktøjer som bruges i projektet.
  • Dokumentering af realiseringen af designet!!! Dette er mindst lige så vigtigt som selve kodningen eller tegnearbejdet. Hvis du f.eks. er meget dygtig til at tegne, så skal du lave screenshoots (med PrtScr knappen på en PC/Windows) for at alle kan se at du selv har lavet dine skitser, tegninger, knapper, baggrunde osv.

Diverse info for HP Compaq Business Desktop dc7100 Series, Gkb 12:17, 13 January 2014 (CET)

På en etiket klistret på en af maskinernes kabinet er der fire linjer med information:
HP Compaq dc7100 SFF
HP Compaq dc7100 SFF Base Unit ALL
hp s/n: CZC534028H (og så er der en stregkode)
p/n: DX878AV (og så er der en stregkode)

En søgning på "HP Compaq dc7100 SFF Base" førte frem til diverse information om maskinen. Blandt noget af det første var at det virker som maskinen hører til "HP Compaq Business Desktop dc7100 Series". Her følger nogle links som kan være til nytte i forbindelse med gennemførelse af projektet Computerens anatomi.


  • Most viewed solutions for HP Compaq dc7100 Small Form Factor PC


  • Manuals for HP Compaq dc7100 Small Form Factor PC


Gode tutorials om Java og Minecraft,Gkb 16:10, 9 January 2014 (CET)

Software for Traveler USB microscope

I have a Traveler USB microscope, but I have lost the CD. I found some software that works with the microscope at It is called a driver, -but it installs also some user program (or programs). The link is here: The scope is working again.

Functions and loops with POV-Ray,Gkb

I have just tested how to use functions and loop in Povray. The following example is inspired by an example in section " Invoking Macros" in the help file for POV-Ray 1.0 for Windows.


The source code is here.

// Inspired by an example in section "  Invoking Macros" in the help file for POV-Ray 1.0 for Windows.

// Persistence of Vision Ray Tracer Scene Description File
// File: Make_Frame_makro_test_gkb_v01
// Vers: 3.6
// Desc: Checkered Floor Example
// Date: mm/dd/yy
// Auth: Karl Bjarnason

#version 3.6;

#include ""

global_settings {
  assumed_gamma 1.0
  max_trace_level 5

// ----------------------------------------
camera {
  location  <50, 5, -50>
  direction 1.5*z
  right     x*image_width/image_height
  look_at   <27, 0, 0>

//camera {
//  location  <-1, 0.5, -4.0>
//  direction 1.5*z
//  right     x*image_width/image_height
//  look_at   <0.0, 0.0,  0.0>

sky_sphere {
  pigment {
    gradient y
    color_map {
      [0.0 rgb <1,0.7,1.0>]
      [0.7 rgb <0.0,0.1,0.8>]

light_source {
  <0, 0, 0>            // light's position (translated below)
  color rgb <1, 1, 1>  // light's color
  translate <-30, 100, -30>
//These cylinders show where the axis are.
cylinder{<0,0,0>, <100,0,0>, 0.3 pigment{color Red} }                                         
cylinder{<0,0,0>, <0,100,0>, 0.3 pigment{color Green } }                                         
cylinder{<0,0,0>, <0,0,100>, 0.3 pigment{color Blue} }                                         

// ----------------------------------------
plane {               // checkered floor
  y, 0
    pigment {
      color rgbf<.1,1,0,.7>
      color rgbf<.1,0,0,.7>
      scale 0.5
plane {               // checkered floor
  x, 0
    pigment {
      color rgbf<.1,1,0,.9>
      color rgbf<.1,1,1,.9>
//      color rgb <1,1,0>
//      color blue 1
      scale 0.5

#macro Make_Frame(OuterWidth,OuterHeight,InnerWidth,
  #local Horz = (OuterHeight-InnerHeight)/2;
  #local Vert = (OuterWidth-InnerWidth)/2;
  difference {
      pigment {
        color red 1

Make_Frame(8,10,7,9,1) //invoke the macro           

#declare AntalFrames=5;
#declare Count=1;
#while (Count < AntalFrames)
  object{ Make_Frame(8,10,7,9,1) translate  10*Count*x}
  #declare Count=Count+1;

Div links i forbindelse med SRP opgaver

grafteori - Google Search mm


RSA - Google Search, og der af følgende websider


LaTex i vores wiki, --Gkb 15:31, 21 November 2013 (CET)

Vi mangler support for LaTex i vores wiki, se hvordan vi skal gøre her:


 \operatorname{erfc}(x) =
 \frac{2}{\sqrt{\pi}} \int_x^{\infty} e^{-t^2}\,dt =
 \frac{e^{-x^2}}{x\sqrt{\pi}}\sum_{n=0}^\infty (-1)^n \frac{(2n)!}{n!(2x)^{2n}}



      x + 5 = -3

</math> <math>

         \sin A \cos B &= \frac{1}{2}\left[ \sin(A-B)+\sin(A+B) \right] \\
         \sin A \sin B &= \frac{1}{2}\left[ \sin(A-B)-\cos(A+B) \right] \\
         \cos A \cos B &= \frac{1}{2}\left[ \cos(A-B)+\cos(A+B) \right] \\


--Gkb 09:23, 19 November 2013 (CET)

Eksperimenter med matplotlib.pylab --Gkb 16:38, 15 November 2013 (CET)

Med udgangspunkt i og, lavede jeg følgende spike solutions. Se også

from pylab import * 
x = arange(0,10) 
y = arange(3,13) 

m,b = polyfit(x, y, 1) 

plot(x, y, 'yo', x, m*x+b, '--k') 
import matplotlib.pyplot as plt
import pylab
#from pylab import *

#plt.plot([1, 2,3,4], [1,4,9,16],'ro')

xdata=[0, 1, 2, 3,  4,  5, 6,   7,  8, 9,   10]
ydata=[0, 1, 4, 8, 11, 22, 34, 45, 60, 84, 100]

#xfit = array( [amin(x), amax(x) ] )
#xfit = pylab.array( [pylab.amin(xdata), pylab.amax(xdata)] )
xfit = pylab.array( [0, 10] )
print xfit

m,b = pylab.polyfit(xdata, ydata, 1) 
#plt.plot(xdata,ydata,'yo', xx, m*xx+b, '--k')
plt.plot(xdata,ydata,'yo', xfit, m*xfit+b, '--k')

a,b,c = pylab.polyfit(xdata, ydata, 2) 
#plt.plot(xdata,ydata,'yo', xx, m*xx+b, '--k')
plt.plot(xdata,ydata,'yo', xfit, a*xfit**2 +b*xfit + c, '--k')

--Gkb 16:42, 8 November 2013 (CET)

2013-09-16, mandag

beskrivelse i prosa, paa Dansk - Google Search mm

2013-09-11, onsdag

Og et primitivt eksempel som viser hvordan man fra et Tkinter GUI kan påvirke objekter i vinduer lavet med Visual.

from visual import *
import Tkinter

scene01 = display(title='Scene01', x=0, y=0, width=600, height=200, center=(5,0,0), background=(1,0,0))
scene02 = display(title='Scene02', x=600, y=0, width=600, height=200, center=(5,0,0), background=(0,1,0))
scene03 = display(title='Scene03', x=0, y=201, width=600, height=200, center=(5,0,0), background=(0,0,1))
scene04 = display(title='Scene04', x=600, y=201, width=600, height=200, center=(5,0,0), background=(1,0,1))
ellipsoid(pos=(0,0,0), length=1, height=2, width=3)

def do_something_in_visual():

def move_the_cone_in_scene02():
    for x in range(11):
b1=Tkinter.Button(text="Make the sphere in scene01 red!", command=do_something_in_visual).pack()
b2=Tkinter.Button(text="Move the cone in scene02", command=move_the_cone_in_scene02).pack()

2013-09-10, tirsdag

Her er nogle små kodeeksempler som jeg har lavet til undersøge mulighederne med modulet Visual.

Translate, Rotate, Resize

from visual import *

xakse = cylinder(pos=(0,0,0),,   axis=(10,0,0), radius=.05)
yakse = cylinder(pos=(0,0,0),, axis=(0,10,0), radius=.05)
zakse = cylinder(pos=(0,0,0),,  axis=(0,0,10), radius=.05)

box1 = box(color=color.yellow, radius=0.5)

for x in range(11):
    box1.pos= (x,0,0)

#Rotation om boksens eget centrum
for i in range(36):
    #obj.rotate(angle=pi/4, axis=axis, origin=pos
    #print x

#Rotation om origo
curve1=curve(pos=[(10,0,0)], radius=0.06)

for i in range(36):
    #obj.rotate(angle=pi/4, axis=axis, origin=pos
    box1.rotate(angle=(2*pi)/36, axis=(0,1,0), origin=(0,0,0))
    print box1.pos

#Resize med faktor 2
for k in range(11):
    #obj.rotate(angle=pi/4, axis=axis, origin=pos
    print box1.size

from visual import *
import Tkinter

scene01 = display(title='Scene01', x=0, y=0, width=600, height=200, center=(5,0,0), background=(1,0,0))
scene02 = display(title='Scene02', x=600, y=0, width=600, height=200, center=(5,0,0), background=(0,1,0))
scene03 = display(title='Scene03', x=0, y=201, width=600, height=200, center=(5,0,0), background=(0,0,1))
scene04 = display(title='Scene04', x=600, y=201, width=600, height=200, center=(5,0,0), background=(1,0,1))
ellipsoid(pos=(0,0,0), length=1, height=2, width=3)


from visual import *

xaxis=cylinder(pos=(0, 0, 0), axis=(0.9, 0, 0),,   radius=0.02)
yaxis=cylinder(pos=(0, 0, 0), axis=(0, 0.9, 0),, radius=0.02)
yaxis=cylinder(pos=(0, 0, 0), axis=(0, 0, 0.9),,  radius=0.02)
xcone=cone(pos=(0.9, 0, 0), axis=(0.1, 0, 0), radius=0.05,
ycone=cone(pos=(0, 0.9, 0), axis=(0, 0.1, 0), radius=0.05,
ycone=cone(pos=(0, 0, 0.9), axis=(0, 0, 0.1), radius=0.05,

x_label=label(pos=(1,0,0), text="x")
y_label=label(pos=(0,1,0), text="y")
z_label=label(pos=(0,0,1), text="z")
help_label=label(pos=(0,0,0), text="l or L - flips labels")
help_label.text+="\ng or G - flips grids" 
help_label.text+="\na or A - zooms out and shows all objects in the sceene"
help_label.text+="\nb or B - flips a box grid around all objects in the scene"

xaxis=cylinder(pos=(-10, 0, 0), axis=(20, 0, 0),,   radius=0.01)
yaxis=cylinder(pos=(0, -10, 0), axis=(0, 20, 0),, radius=0.01)
yaxis=cylinder(pos=(0, 0, -10), axis=(0, 0, 20),,  radius=0.01)

list_of_xz_axis_grid_lines = []
list_of_zx_axis_grid_lines = []

list_of_xy_axis_grid_lines = []
list_of_yx_axis_grid_lines = []

list_of_yz_axis_grid_lines = []
list_of_zy_axis_grid_lines = []

#Her laves lister med cylinder objekter som bruges i grid'en.
for i in range(-10,11):
  list_of_xz_axis_grid_lines.append(cylinder(pos=(-10, 0, i), axis=(20, 0, 0),,   radius=0.01))
  list_of_zx_axis_grid_lines.append(cylinder(pos=(i, 0, -10), axis=(0, 0, 20),,   radius=0.01))
for i in range(-10,11):
  list_of_yz_axis_grid_lines.append(cylinder(pos=(0, -10, i), axis=(0, 20, 0),,   radius=0.01))
  list_of_zy_axis_grid_lines.append(cylinder(pos=(0, i, -10), axis=(0, 0, 20),,   radius=0.01))
for i in range(-10,11):
  list_of_xy_axis_grid_lines.append(cylinder(pos=(-10, i, 0), axis=(20, 0, 0),,   radius=0.01))
  list_of_yx_axis_grid_lines.append(cylinder(pos=(i, -10, 0), axis=(0, 20, 0),,   radius=0.01))

def hide_xz_grid():
    for i in range(-10,11):
def show_xz_grid():
    for i in range(-10,11):

def hide_yz_grid():
    for i in range(-10,11):
def show_yz_grid():
    for i in range(-10,11):

def hide_xy_grid():
    for i in range(-10,11):
def show_xy_grid():
    for i in range(-10,11):

def hide_labels():
def show_labels():

box01 = box(pos=(.5,.5,.5))

#prose = label() # initially blank text
while True:
    if scene.kb.keys: # event waiting to be processed?
        s = scene.kb.getkey() # get keyboard info
        if len(s) == 1:
            if s=="g" or s == "G":
            elif s=="h" or s == "H":
                print "Hide: h eller H blev trykt."
            elif s=="l" or s == "L":              
                if labels_hidden:
            #prose.text += s # append new character
        #elif ((s == 'backspace' or s == 'delete') and
        #        len(prose.text)) > 0:
        #    pass
        #    #prose.text = prose.text[:-1] # erase letter
        elif s == 'shift+delete':
            #prose.text = '' # erase all text

2013-07-30, tirsdag

2013-06-29, lørdag

2013-06-28, fredag

2013-06-22, lørdag

2013-06-15, lørdag

Fortsat tanker i forbindelse med planlægningen af næste års undervisning, primært i Programmering C. Meget vil også være relevant for Informationsteknologi B.

Emner som ville være gode at integrere i undervisningen

  • Dokumentation af programmer. Evt. indføre konsekvent brug af Pydoc. Også som før bruge listen over de ca. ti tiltag til at dokumentere mindre (små programmer), se her XXX.
  • Best coding practices for Python. Se og og
  • Pathfinding med Python, specielt hvis vi vælger at bruge Pygame til at lave spil.
  • MASM, NASM og GAS, ..., teste, vise eksempler,
  • Microprocessor'er, se på deres udvikling overordnet samt se nærmere på nogle bestemte processorer som f.eks. 6502, Z80, ARM, ... og deres efterkommere.
  • Statistik om brug af computere, bestemte processorer mm
  • Statistik om brug af programmeringssprog.
  • Flowcharting, tools for, find! Flowcharting software?

2013-06-14, fredag

Programmering C - diverse noter i forb. med planlægning af undervisningen næste år

  • Jeffrey Elkner, How to Think Like a Computer Scientist, Learning with Python, Fortsætte at anvende denne bog som den primære kilde/litteratur om programmering med Python.
  • Pygame
  • Albert Sweigart, Making Games with Python and Pygame, 2012. Evt. anvende som litteratur i faget.
  • Sage, Evt. anvende som værktøj i faget. Teste på Ubuntu/Mac, kræver Virtual Box på Windows XP.
  • Blender API'en, -evt. dække med en øvelse i to moduler. Se instruktion her:
  • Sortering med Bubble Sort. Eventuelt lave en øvelse i et forløb på to moduler. Implementere selv algoritmen i Python og sammenligne med .sort() metoden for lister. Generere tilfældige indata i en liste (random.randint()), måle sorteringstiden (time.time() eller time.clock()), gentage flere gange for forskelligt antal tal i listen (while n<NumberOfDataSets), og præsentere resultaterne i en tabel (repr() og/eller XXX)
  • GUI med Tkinter
  • GUI med Lazarus IDE
  • GUI med ...
  • Screeningtest, lave! Bruge Lectio?
  • Andengradsligning, lave oplæg til øvelse

Introduktion af faget, evt. indhold til en (multimedia) præsentation

  • Lærer (lærere), studieretninge, forskellig toning?, hvordan? Studieplanen (projekter, øvelser, opgaver, tests, screening)
  • Fagets indhold, kærnestoffet, supplerende stof (UML, systemudvikling, ...)
  • Hvad vi ikke laver: Client-server programmering med PHP og lignende. Telefon Apps.
  • Fokus på Python og IDLE!
    • Selve Python (de ca 30 keywords og de indbyggede funktioner, samt nogle af de medfølgende moduler)
    • Pygame
    • Turtle
    • Visual
  • Portfolio på Opbygning af portfolio (StudieWeb) på, hvor alle opgaver, øvelser og projekter præsenteres.
  • Aflevering i Lectio!????
  • Programmering, hvad er det?
  • Debuging
  • Kompilering versus interpretering
  • Objektkode versus kildekode
  • Assembler sprog versus højniveau sprog
  • Paradigmer for programmering: Funktional, imperativ, objektorienteret, ...
  • Systemudviling: Vores egne metode, Extreme Programming, og RUP, Scrum, DSDM (
  • Men vi bruger også andre udviklingsmiljøer og sprog, såsom Lazarus IDE, NetLogo, ... Disse introduceres i korte øvelser, typisk to moduler, og eleverne kan så evt. vælge at bruge disse i projektforløbene.
  • Data - Information - Viden, præsentere modellen.
  • Data og datastrukturer i programmeringssproge, vise eksempler i Python
  • Programmeringssprog og udviklingsmiljøer (nuancere lidt, Python er ikke IDLE og Lazarus IDE er ikke Object Pascal)
  • Programmeringssprog som vi vil anvende i faget.
  • Udviklingsmiljøer som vi vil anvende i faget.
  • Hello World, hvad er det?
  • Bøger og andre kilder som vi bruger:
    • Om Python,
    • Pygame, og om andre aspekter ved programmering?
    • Evt. HCI og brugerfladedesign?
    • Algoritmer?
    • Programmeringssprogenes udvikling fra Fortran til Python mm.
    • Tegn, koder og talsystemer: ASCII, Unicode (,
    • Systemudvikling (XP)
    • UNIX/Linux system kommandoer (finde en passende webside/bog) Specielt til at forklare filsystemer, path, copy, ls/dir, ps, top, kill, ssh, vi, vim, nano og pico, df, og scp.
  • Andre sprog som præsenteres kort: Object Pascal, C, C++, Logo, Scheme, ...
  • Andre værktøjer: Eric IDE, Lazarus IDE, POV-Ray, ArgoUML, Dia, gcc, ...
  • Flere udviklingsmiljøer, som vi nok skal lige præsentere med en Hello World demo: Delphi, Visual C#, Visual Basic, Gambas (kun på Ubuntu), Arduino IDE, Processing, NetLogo, ...
  • UML og Flowcharting
  • Hardware som vi vil anvende i faget. Arduino eller Raspberry Pi ( Roboter?

2013-04-29, mandag

Model for vurdering/evaluering af læringsaktiviteter, eller alternativer i undervisning

I en diskussion med Bill støvede jeg af den model for evaluering af læringsaktiviteter som vi udviklede i vores samtaler i årene omkring 2005 til 2007. Det var vores ide at modellen skulle kunne bruges til at diskutere og evaluere læringsaktiviteter og beslutninger med afsæt i de forskellige interessenters interesser. Det handler f.eks. om selve den lærende, vejledere, skolen eller den pågældende organisation, og myndigheder (evt. forskellige slags).

Modellen indeholdt følgende begreber: Transparens, Transfer, Økonomi og Pædagogik.

I diskussionen i dag blev det klart at der er en vis risiko for at transfer også bruges til at sætte fokus på aspekter relateret til den situation når en lærende skifter uddannelse. F.eks mht. meritovcerførsel fra den gamle uddannelse til den nye. Jeg ønsker at transfer skal sætte fokus udelukkende på den del af den lærendes færdigheder fra en bestemt sammenhæng som direkte kan omsættes og bruges i en anden bestemt sammenhæng. F.eks. hvis den lærende har lært at programmere i Visual Basic, så vil der være en ret så stor transferværdi fra den aktivitet hvis han eller hun nu skal lære at programmere i et andet programmeringssprog.

Vi diskuterede at der måske var grund til at tilføje et begreb til modellen, nemlig kontinualitet (sammenhæng?, kan vi finde et bedre ord?), for at fange aspekter ved f.eks. skift af uddannelse.

Den nye version af modellen bliver således: Transparens, Transfer, Økonomi og Pædagogik - Sammenhæng (continuity).

Her er nogle eksempler på situationer som vi oprindelig brugte modellen til at belyse:

  • Klassesæt af lærebøger på papir versus klassesæt af elektroniske onlineversioner af de samme eller lignende bøgen.
  • Klassesæt af lærebøger versus udvalgte frie og gratis onlinekilder.
  • Software med lukket licens og licensafgift versus gratis og frie open source programmer.

2013-03-22, fredag

2013-03-22, fredag

Ordbøger, open source, GNU mm


Sammenligne div liceser:

2013-02-28, torsdag

Nogle ideer til øvelser, projekter eller lignende:

  • DPI og/eller PPI (Pixels Per Inch), måle hvor mange pixels der er per tomme for forskellige skærme. Bruge forstørrelsesglas og en afstandsskala, f.eks. en lineal og fotografere og så tælle pixels.
  • Lazarus og MySQL, lave en spike solution med Lazarus som demonstrerer løsning af det kærneproblem at logge på vores MySQL server, vælge en database og hente indhold fra en tabel.
  • Cropping af billeder fra vores webcams med PIL.
  • Cropping igen og nu med ImageMagic.

2013-01-14, mandag

2013-01-04, onsdag

  • Forskel på strænge, mindste arbejde for at konvertere en stræng til en anden, undersøge!
  • Ophavsret og licenser mm. Finde på en situation, definere persona og skrive scenariebeskrivelser som illustrerer gældende lovgivning og praksis, samt etiske og moralske normer på området.

2013-01-03, torsdag, første skoledag efter jul

  • Dynamisk HTML, lave et lille eksempel. F.eks. et inputfelt hvor indtasted tekst vises i en alertbox og/eller tilføjes til en paragraph i samme webside. Bruge lejligheden til at demonstrere generisk tilgang: Brug af primære kilder til at søge info, og anvendelse af den Generiske WebDesign Cyklus, (skal vi bruge GWDC?)
  • GWDC, lave en illustration af. Placere anvendelse af generiske kilder i cirklen/processen/tilgang/practice? Hvad skal vi kalde det? Ligner GWDC ikke lidt XP's tilgange/practices?
  • Demoprojektforløb for Computerspil, text/HTML i wikien og video og audio. Scratch/GameMaket/Gambas/HTML5

2012-12-20, torsdag, sidste skoledag inden jul

Se nærmere på:

  • Lärarrummet, Per Falk, IKT-pedagog:
  • Barnaministeriet Dokumentär, Det digitala barnet:
  • Medialized, A thread in the web:
  • UR Samtiden - Så minns unga, Att använda IT och ny teknik i skolan: En video som præsenteres på følgende måde. "Nigel Musk, doktor vid Linköpings universitet, har undersökt hur ny teknik används i engelskaundervisningen och vilka nya möjligheter som IKT, informations- och kommunikationsteknik, erbjuder eleverna och lärarna." Han, altså Nigel Musk, beskriver blandt andet i sin præsentation hvordan to drenge løser et oversættelsesproblem ved hjælp af online-værktøjer.

2012-12-18, tirsdag

Generiske projekttemaer (mønstre?), ideer til

  • Gæstebog, en client-server løsning med PHP, ingen SQL. Det er et problem at gæsterne kan skrive anonymt, nogle vil evt. skrive noget som er krænkende for nogen, og andre vil evt. misbruge gæstebogen til at lægge reklamer i den. Til at begrænse det første problem så behøves vel indlogning med user ID og stærkt password (nyt mønster!?). Til at begrænse det andet problem, så kan input begrænses til f.eks. 100 tegn og vi kan kræve en CAPTCHA, altså at brugeren gør noget som er svært for en robot at gøre for at sandsynliggøre at han er et menneske. Kombinationen af disse tre tiltag vil nok gøre gæstebogen rimelig sikker.
  • Indlogning i et client-server system.
  • Betaling med kreditkort (er det realistisk at vi kan programmere dette?)
  • Betaling med PyPal ...?
  • Galleri, uden upload
  • Upload af filer.
  • Galleri med upload af billeder, uden automatisk skalering og komprimering af billederne
  • Skalering af billeder, alle billeder i en mappe, eller alle billeder i en liste.
  • Komprimering af billeder, alle billeder i en mappe eller alle billeder i en liste.
  • Sammenligning af billeder taget samme sted og kassering af overflødige billeder, altså kun gemme et billed hvis der er flere som er identiske eller "næsten" identiske. Tænkt anvendesle er i forb. m. automatisk fotografering af tavlerne i MediaLab
  • Automatisk publisering af et billed fra en webkamera eller mobiltelefon, f.eks. tavlebilleder fra vores lokaler. Både automatisk f.eks. een gang pr. time og også per kommando fra en webside.
  • Dataoverførsel fra
    • en fil til en anden fil i samme mappe.
    • en fil til en anden fil i en anden mappe.
    • en comp til en anden computer.
    • LAN til LAN over egen router.
    • comp to comp over Internet. Evt. teste forskellige lande som source og destination.

2012-09-24, mandag

Browsede lidt om Tim Berners-Lee og Queen Elizabeth, på en af computerne i MediaLab (i Ubuntu). Jeg bookmarkede og exporterede så alle bookmarks fra Chromium til en html fil som jeg kopierede til mit StudieWeb. Der er blandt andet interview med ham på TV i forbindelse med åbningen af OL i London.

2012-09-10, mandag

Anvendelse af Field Effekt Transistorer til at tænde og slukke for lys, motorer mm.

2012-06-26, tirsdag

Screendump with Python

from visual import *
import Image # from PIL
import ImageGrab # from PIL

#sphere (color=(1,.5,1))

im = ImageGrab.grab((0,0,1023,767)) # if window located at (0,0), width=height=600'screendupmp.png') # where filename is incremented for each image

2012-06-04, mandag


Awards, mere info om personer:


Filippinerne, Manila mm:


2012-05-25, fredag

Interessant, undersøg!:

2012-05-15, tirsdag

The Mother of All Demos

Bare til at teste lyden på vores nye Mac fandt jeg frem denne demo hvor Douglas Engelbart's demonstrerer, vistnok som den første nogensinde (se nærmere på svenskeren som også påstår at han har opfundet musen), en mus til at pege go klikke med, samt editering med copy, cut og paste mm. fra 1968:

Afleveringer af projekter 2012

2012-03-30, fredag

  • Philip har fået sammenligning af RFID taggens nummer med en liste i en tekstfil til at virke.
    • Octal input? Han havde et lidt mystiskt problem med input sætningen, den ville ikke akseptere tallet 8, mens 1,2,3,4,5,6,7 var ok. Det viste sig også at den ikke ville akseptere 9. Han fik en "invalidt token" error, eller noget i den retning. Det viste sig at hans IDLE/Python default forventede tal i octal-systemet i input sætningen. F.eks. gik det fint at angive binære tal med notationen 0b1000 (altså 8). Dette løstes ved at anvende raw_input i stedet. Forklaring?
    • Tekstfiler, læsning fra. Læsning af et RFID trigger eksekvering af en funktion i hans prg som søger efter det læste tagnr i en tekstfil, det gik fint første gang, men efterfølgende eksekveringer af funktionen virkede ikke korrekt, fandt altså ikke tagnummeret i filen. Han åbnede filen før funktionskaldet. Dette blev løst ved at åbne filen og lukke den igen inde i selve funktionen som eksekveres når en tag opdages.
    • RFID kort fra kan fås for ca. en USD pr. stk., 100 stk. for 95 USD plus 36 USD i frakt. Let-Elektronik tager 29 kr pr. stk, så der er noget at spare. Vi talte op og vi har vistnok ca. 15 hvide plastik RFID kort som Philip kan bruge til at teste udskrivning af MediaLab's log mm på, samt dele ud til nogle elever til at teste hans system. Se også og
  • Rasmus spurgte til rendering af lampefod ad en ikke lodret, helst vilkårlig, vej. Jeg beg. lidt at lege med det, men blev ikke færdig. Tænker nu helst at bruge "ring" objektet. Lave instansen i origio, skalere og rotere i origo og så translatere ud på ønsket position. Altså ikke at anvende curve objektet.
  • KomItC13:
    • User stories, både teori og eksemplet om kaffemaskinen hos, sat for at studere med henblik på at anvende user stories (brugerhistorier) i aktiviteten "Interationsplanlægning".
    • Grupperne afleverede udfyldte en formular, som Emil og jag lavede i fælleskab, hvor de informerer om gruppemedlemmer, problemformulering, val af mediekategori og hvilke produkter de vil bruge til at forsøge at løse problemet.

2012-03-29, torsdag

2012-03-27, tirsdag

KomItC16 og KomItC15

  • I dag satte vi fokus på systemudviklingsaktiviteten "Iterationsplanlægning", IP, og dermed blev det nødv at skrive nogle brugerhistorier.
  • Præsenterede generelle krav til projektbeskrivelse og rapport.
  • Kopi, ca. 10 sider, af info om vores designmodeller og systemudviklingsmodellen delt ud til alle i kl. 1.5. (Klasse 1.6 fik et eksemplar per gruppe i sidste uge.)

Mads, InfB334

Keypad/dørlås, vi disk om han kunne lave et program til en PC til at "styre" eller kommunikere med den dørlås som han har lavet i elteknik og/eller teknologi. Vi diskuterede og fangede følgende krav til et eventuelt program:

  1. Ændre kode, programmet skal kunne ændre koden automatisk hvert andet minut, f.eks. på baggrund af en bestemt algoritme, eller hente den fra en fil, eller få den fra en webserver, eller vha. en anden metode.
  2. Kontrollere om en indtastet kode er rigtig.
  3. Åbne låsen
  4. Lukke, altså låse låsen

Vi behøver kendskab til protokollen for kommunikationen mellem hans keypad og computeren for at lave et program som faktisk virker sammen med hans hardware, men vi kunne evt. også bare antage at vi kender den og lave den første prototype uden at realisere kommunikationen til keypad'en. Det er klart at der kan laves et eks. proj. i PrgC kan laves over dette emne, og evt. også eks.proj. i InfB.


  • Reflektion over uv. med 1.5 og 1.6 i morges. Tænkte over og noterede div. om hvordan konkrete teknikker og krav til arb. i KomItC kan placeres i vores systemudviklingsmetode.
  • 3D skakbræt med Visual Python, viste Jens i C3101, m. 3D briller.
  • Temperaturmåler med LM335 og Arduino og Processing, ville vise Jens, men prototypen holdt op med at virke lige når jeg ville skifte transduceren ud med en som var pakket ind i krympeflex.

2012-03-26, mandag

KomItC16 og KomItC15

  • I dag satte vi fokus på systemudviklingsaktiviteten "Indledende aktivitet", IA, og dermed blev det aktuelt at diskutere kommunikationsplanlægning og resurseplanlægning for projektet.
  • Jeg gennemgik vores systemudviklingsmodel samt den klassiske kommunikationsmodel og AIDA modellen. (Tog fotografier af tavlen!)

2012-03-23, fredag


Han vil bruge curve objektet til at "tegne" lampens leg langs en anden kurve, f.eks. cirkelbue eller lignende. Se,, Han har et prg som bruger curve til at tegne mange cirkler med varierende radius rundt x-aksen og sålede visualiserer han lampen. Han vil tilpasse det program således at en hvilkorlig kurve/funktion kan bruges som centerlinje i lampens leg, og så vil kan bruge curve objektet til at tegne cirkler vinkelret på denne kurve, tror jeg nok. Dette problem virker evt. let at løse, f.eks. ifølge følgende skridt:

  1. render cirklen med den korrekte indre radius, tykkelse og farve i centrum i koordinatsystemet.
  2. roter den således at den er vinkelret på en tangent til kurven i punktet hvor cirklens centrum skal placeres.
  3. translater dens centrum til positionen

Men curve objektet i Visual modulet tillader evt ikke denne type manipulation, så evt. er det en bedre ide at bruge "ring" objektet. Eller så kunne Rasmus bruge curve objektet direkte til at "tegne" lampens fod, men ikke til at tegne cirkler som så definerer lampens fod som en slags wire-frame model. Ved at definere tykkelsen på kurven lig med diameteren på lampefoden på hvert sted, så vil der opstå en udfyldt volumen (solid model) som visualiserer lampens ben.

...lidt senere: Læs og test eksempler på, det ser ud til at curve objektet udmærket egner sig til denne opgave.




  • Gantt chart (Gantt diagram), brug Planner
  • Mindmap diagram, brug Xmind eller Freemind
  • Rich diagram (Rigt diagram), brug papir og blyant
  • Blokdiagram, bryg papri og blyant, eller er der ikke et UML diagram som kan bruge her?
  • Flowchart (Rutediagram), brug Dia
  • Class diagram (Klassediagram), brug Dia eller ArgoUML
  • Use Case diagram (Brugstilfældediagram), brug Dia eller ArgoUML

Documents associated with UML Version 2.4.1


<img src="M31.JPG">





POV-Ray, en minimal video-tutorial

Vi har i mange år brugt raytracer-programmet POV-Ray, Presistens Of Vision Ray Tracer, i undervisningen. Her er en link til en ca. 20 minutter lang video som jeg rekorderede i går, onsdag d. 29. september 2011.

Videoen viser hvordan man kan bruge en af de "Scene templates" som er tilgængelige i Insert menuen som udgangspunkt for en lille 3D model med tre lange smalle cylindre som ligger på koordinatsystemets akser og skærer hinanden derfor i origo. Den cylinder som ligger på x-aksen er rød, den på y-aksen er grøn og den på z-aksen er blå.

Der er et par ting som jeg vil sætte fokus på i denne video:

  • Mange af de kommandoer som er i den scene template som jeg bruger som udgangspunkt, kan faktisk slettes uden at det ødelægger det renderede 2D billed.
  • Man kan få "context sensitive help", altså hjælp som er afhængig af den situation som man er i når man beder om hjælp, ved at placere cursoren i eller ved en kommando, et reserved keyword, og trykke på F1-tasten. For eksempel hvis vi ved at vi vil bruge en cylinder, så kan vi bare skrive ordet "cylinder", som farves automatisk lilla (violet) når POV-Ray genkender det som et reserveret keyword og så trykker vi F1, og så åbnes hjælpesystemet det sted hvor syntaksen for brug af netop dette keyword forklares.

Vidoen er uden lyd og der er flere aspekter ved brugen af POV-Ray som ikke direkte fremgår af videoen. Her nævnes et par som jeg kommer i tanke om nu:

  • Alt+g bruger jeg til at rendere billedet, i stedet for hele tiden at trykke på "Run" ikonet i toolbar'en under menu-bar'en.

aslkdjfhalskdjhflka æklasjhdflkashj

  1. asdf
  2. dfas

2D Trail i Java, en måde hurtigt at begynde at lave grafik med Java

Sun Microsystems udviklede Java, og en ordentlig bunke dokumentation som var frit tilgængelig på Så købte Oracle firmaet og fik således kontrol over Java. Det virker som største delen af den dokumentation som Sun lavede stadig findes frit tilgængelig på nettet, nu har adressen bare ændret sig lidt.

Her er en link til en vejledning om hvordan man kommer i gang med at lave 2D grafik med Java:

Se også for en vejledning i at bruge javac og java.

Pythonxy, en samling af mange kraftfulde tools i en pakke

Når man installerer Pythonxy, så installerer man også samtidigt flere kraftfulde værktøjer som kan bruges sammen med Python. En af dem er udviklingsmiljøet Spyder, som vi kan bruge i stedet for IDLE, -hvis vi altså ønsker det.

pythonxy - Google-søgning mm

Spyder kommer fra og er også dokumenteret på

Jython, brug Java from Python

jython - Google-søgning mm

Af disse er evt. bedst at se på, når man altså har installeret Jython, for hurtigt at komme i gang.

Links to check

  1. Dennis M. Ritchie
  2. Brian Kernighan

Systemudviklingsmetode, metoder, voes metode, -klip og kladde

Note: Vi har hentet inspiration til vores systemudviklingsmetode fra flere steder, men systemudviklingsmetoden Extreme Programming,, som ofte bare kaldes XP, har nok været den vigtigste inspirationskilde. Vi vil egentlig gerne bruge den fuldt ud, men indtil nu har vi ikke følt at vi kunne kaste os ud i at anvende hele begrebssystemet fra metoden, og derfor har vi altså lavet vores egen hjemmelavede systemudviklingsmetode, hvor flere væsentlige begreber fra XP fastholdes, men dog uden de mange detaljer som indgår i XP. Vi forventer i voksende grad at anvende XP i alle fag som arbejder i RTG-MediaLab, dog således at der vil være forskel på måden vi gør det i de enkelte fag. Således vil metoden præsenteres i KomItC omtrent på det niveau som vi nu, forår 2010, bruger vores hjemmelavede metode. Vi forventer så at anvende en betydeligt større del af begrebssystemet fra XP i fagene InfB og PrgC/PrgB og KomItA. I disse fag vil vi også præsentere andre systemudviklingsmetoder end XP. På HTX er der nogle særlige forhold som gør sig gældende i skolearbejdet, f.eks. i forbindelse med krav til design af kommunikation og til dokumentation af arbejdet. Disse forhold vil sandsynligvis kræve særlig tilpasning af XP, eller tillæg til metoden, når vi begynder at anvende den i større omfang. Men vores hjemmelavede metode skal netop både være lidt enklere at sætte sig ind i end XP, og også tilgodese disse særlige HTX relaterede forhold.
En anden vigtig inspirationskilde har været den danske systemudviklingsmetode Objekt-Orienteret Analyse og Design, eller OOA&D, som den ofte kaldes. Denne metode kom frem lige før år 2000, altså lidt efter XP.

Eksamensprojekter - ideer til

Vi vil meget gerne at vores elever hjælper os at udvikle MediaLab. Mange af de vigtigste funktioner i laboratoriet er udviklet af vores elever i perioden fra 1998, hvor vi fik vores egen ADSL forbindelse og begyndte med vores første webserver (Debian).

Nu i begyndelsen af februar 2011 er vi alle ved at omstille os til snart at påbegynde eksamensprojekterne i de forskellige fag i MediaLab, altså DesC, InfB, PrgC, KomItA og KomItC. I mange tilfælde kan I ret frit vælge den problemstilling som I vil arbejde med i jeres projekter.

Som lidt inspiration har vi samlet en liste over funktionalitet, eller opgaver, af forskellige typer, som vi synes at evt. kunne udvikles og integreres i MediaLab. Hvis I vil arbejde med nogen af disse opgaver, så vil vi gerne fungere som rekvirenter, således at I kan arbejde med en opgave som skal bruges til noget.

  • WebTV for MediaLab, fortsætte udvikling af et projekt som blev påbegyndt foråret 2010.
  • Protokol og/eller encoding demonstration (boundary object). En HW og SW opstilling, evt. med Arduino'er, som skal visualisere hvad en kommunikationsprotokol er, samt hvordan signalet fra en computer underkastes flere ompakninger på sin vej ned på netværkskablet og op igen til brugeren på den modtagende computer (OSI-modellen).
  • Dataopsamling med Arduino'er.
  • Bibliotek, software til en biblioteksfunktion på vores server, samt registrering af MediaLab's bøger.
  • Registrering af udstyr, databse for, udskrift af etiketter med stregkoder, indscanning af stregkoder.
  • Virtualisering af øvelser, diverse øvelser, f.eks. i talsystemer, farver, kommunikation, billedbehandling (evt. webbaseret interface til noget af den funktionalitet som ImageMagic byder på), ...
  • Guides, diverse, for programmer og fremgangsmåder ved løsning af forskellige arbejdsopgaver.

RTG-MediaLab, læringsmiljø og E-learningsystem, - baggrund og mål

Mine elever og mine kollegaer har siden 1998 eksperimenteret med forskellige måder at anvende IT i undervisningen, -jeg vil egentlig hellere tale om læringen. Vi har afprøvet forskellige måder at bygge et læringsmiljø ved hjælp af de nye medier. Vi er meget bevidst om at vores brugere er en ny type af elever som er både aktive og frygtløse daglige brugere af flere kanaler i de nye medier. De bruger for eksempel både SMS via mobiltelefonen, e-mail, computerspil, søgemaskiner, nyhedstjenester, fakta-kilder og diverse community tjenester.

Nye medier, vi lærer at producere for dem

Vi forsøger at forstå de nye medier, både som en remediering af de gamle, og også i relation til de helt nye muligheder og risici som de medfører både for den enkelte bruger og samfundets enkelte organisationer, og dermed selvfølgelig samfundet i helhed. Og vi vil bygge et e-learning system som på bedst mulig måde forbereder vores brugere for aktivt at anvende og deltage i de nye medier, hvor de ikke længere kun er passive brugere eller modtagere af budskaber, men i stedet selv både er afsendere af budskaber og aktive producenter af medieprodukter.

Faggruppen som efterhånden er opstået i relation til MediaLab består af lærere som underviser i fagene Kommunikation og IT på niveau C og A, Informationsteknologi B, Programmering C og Design C. Gruppen består således af flere lærere som repræsenterer forskellige faglige tilgange, som for eksempel systemudvikling, design, billedkunst og fremstilling af computerspil.

(XXX beskrive lidt nærmere, og henvise så til beskrivelse af de enkelte personer, deres wiki-artikel, deres StudieWeb, og deres eventuelle andre online mediprodukter.)

Vi forsøger at fokusere på at designe en oplevelse for vores brugere som gør det muligt for dem selv at drage vigtige konklusioner og lære grundlæggende og varige fakta, ideer, principper og modeller til forståelse af de nye medier. Vi fokuserer på at designe et læringsmiljø for vores elever på RTG som understøtter bedst muligt dette ønske. Læringsmiljøet for vores elever består på den ene side af de fysiske lokaler og det udstyr som RTG-MediaLab råder over og på den anden side af det e-learning system som vi har udviklet.

E-learning er en integreret del af læringsmiljøet

E-learning systemet er en vigtig del af læringsmiljøet, og vi forsøger at udvikle det således at det også kan anvendes af elever som ikke har deres daglige gang på selve skolen. Egentlig ønsker vi at e-learning systemet skal kunne anvendes af elever og lærere, helt uden krav til hvor de befinder sig og på hvilke tidspunkter de ønsker at arbejde i systemet. Dette gør vi for at forberede os på at kunne opfylde de krav som vi forventer at i nærmeste fremtid vil stilles om at elever og lærere skal kunne samarbejde om læring uden nødvendigvis altid at mødes på skolens fysiske adresse.

Vores erfaringer stilles til rådighed for andre

Et vigtigt aspekt ved den måde vi designer vores e-learning system på, er at vi vil gøre de muligt for andre skoler, både i Danmark og i andre lande, at anvende vores design. Vi vil at dette skal være muligt med helt minimale økonomiske omkostninger for skolerne og de enkelte elever. Dette krav har naturligt ført til at vi udelukkende bygger vores system på open source og afgiftsfri software. Det har også ført til at vores system på en måde er et meta-system, det vil sige at vi ikke selv programmerer, vi bare installerer og tilpasser de forskellige systemer, med minimal programmering, således at de i kombination udgør den type af et generiskt e-learning system (nogen vil evt. kalde det et virtuelt læringsmiljø) som vi ønsker at introducere vores elever til.

Grundlæggende tilgang (generisk tilgang) og stor transferværdi

Det generiske aspekt ved vores e-learning system er meget vigtigt! Vi ønsker at vores brugere stifter kendskab med begreber, metoder og værktøjer som er grundlæggende og som kan anvendes i flere forskellige sammenhænge. Hvis vi tillader os at bruge et af det pædagogiske fagområdes vigtige begreber, nemlig begrebet 'transfer', så kan vi sige at vi vil at det vores brugere lærer af interaktionen med vores sysetem skal have en 'stør transferværdi'.

(Der findes flere udmærkede frie og gratis systemer til administration af læring (CMS og LMS), men de er fokuseret på netop det at administrere læring i et vel defineret og ofte meget afgrænset system hvor eleverne interagerer med systemet, hinanden og sine vejledere på en i forvejen defineret måde. ...formulere om?... Vores system er et system af systemer, hvor hvert system har en specialiseret funktion, og giver særlige muligheder som belyser bestemte aspekter ved nye medier. Vores elever lærere således ikke kun at bruge et system, men en vifte af systemer. XXX evt slette denn paragraf helt?)

Tæt på mediet

Det er en konsekvens af den måde vi har bygget e-learning systemet og af den måde vi lader vores elever anvende det, at de kommer i berøring med grundlæggende aspekter ved brugen af de nye medier. Vi siger at vi kommer 'tæt på mediet'. Det betyder at vores elever både planlægger, designer og implementerer kommunikation i de nye medier ved hjælp af grundlæggende metoder, tekniker og værktøjer, således at de får en konkret erfaring af både de grundlæggende kommunikationsmæssige aspekter og de elementære teknologiske aspekter som bruges til at kode og fastholde kommunikationsprodukter i de nye medier.

Designovervejelser for den fortsatte udvikling af vores system, OEP

Vi er nu begyndt at kalde vores system for Open Education Platform, OEP. Vi skal overveje hvor godt dette navn dækker vores hensigter med systemet. Indtil nu har vi ikke kommet på noget bedre. Egentlig er vi ved at udvikle serverfunktionalitet som skoler kan bruge til det pædagogiske arbejde, eller en del af det. Hvis vores system skal bære det fine navn med rette, så bliver vi nødt til at tilføje moduler, sub-systemer, som kan, måske med nogen lokal konfigurering vha. vores scripts, også bruges til administration af både elever og lærere og andre ansatte, skema, løn, lager, indkøb osv. Dette er vi ikke engang begyndt at diskutere. Skal vi? Eller skal vi ikke?

  • CBT-Design-for-RTG-MediaLab, designkriterier for det nye delsystem, forår 2010, i vores system som skal tillade eleverne at evaluere sin viden selv, altså selv-evaluering. Systemet skal give vores brugere en grundlæggende (generisk) introduktion til et fagligt område, og så indeholde links til primære kilder, kvalitetskilder, om emnet. Og så skal der være mulighed for at svare på spørgsmål i emnet og få feedback fra systemet som forteller noget om hvordan elevens viden er i relation til andre som før har svaret på spørgsmålene.
  • asdf
  • asdf

Diverse emner som intereserer mig

Links to examine

 <style type="text/css">
   p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
<p class="p1"><a href="">Free Online Computer Science and Programming Books, Textbooks, and Lecture Notes ::</a>

<a href="">Electrical and Computer Engineering</a>

<a href="">Class Relationships</a>

<a href="">(no title)</a>

<a href="">Free Online Object Oriented Programming Books ::</a>

<a href="">Computer science - Wikipedia, the free encyclopedia</a>

<a href="">computer engineering 6.0 - Google-søgning</a>

<a href="">(no title)</a>

<a href="">gmail - Google-søgning</a>

<a href="">ACM Web Account</a>

<a href="">Algorithms ::</a>

<a href="">Free Online Theory of Computation Books ::</a>

<a href="">MIT UROP: Current Research - Electrical Engineering & Computer Science (Course 6)</a>

<a href="">Introduction to Functional Programming ::</a>

<a href="">Object-Oriented System Development: HTML Edition</a>

<a href="">Book</a>

<a href="">MIT UROP: For Supervisors and Departments</a>

<a href="">Free Online Computer Science and Programming Books, Textbooks, and Lecture Notes ::</a>

<a href="">(no title)</a>

<a href="">Algorithms and Complexity</a>

<a href="">Free Online Algorithms and Data Structures Books ::</a>

<a href="">Introduction to Functional Programming (1996/7)</a>

<a href="">Artificial Intelligence Programming in Prolog (AIPP)</a>

<a href="">An Introduction to Prolog ::</a>

<a href="">(no title)</a>

<a href="">Is computer science science?</a>

<a href="">Free Online Functional Programming Books ::</a>

<a href="">Data structures 6 | McGill University Online videos, David Lowther Computer Engineering</a>

<a href="">Algorithm and Complexity ::</a>

<a href="">computer engineering 6.0 - Google-søgning</a>

<a href="">Object-Oriented System Development ::</a>

<a href="">Main Page -</a>

<a href="">Free Online Logic Programming Books ::</a>

Personal tools