2013PrgC33

From rtgkomArkiv
Jump to: navigation, search

Contents

Aflevering, Gkb 19:13, 14 May 2014 (CEST)[edit]

I morgen, torsdag skal journal og produkt afleveres, både på Fronter og på den projektbruger som er oprettet til jeres projekt på rtgkom.dk.

Vi har besluttet ikke at kræve papriversioner af journalen.

Journal og produkt afleveres på Fronter og på projektbrugeren for projektet som er oprettet på rtgkom.dk.

Eventuelle ikke digitale produkter afleveres i MediaLab inden kl. ca. 15:00.

Hvis I ikke har registreret gruppens projekt i tabellen i holdets wikiartikel, så er projektbrugeren ikke oprettet. I kan registrere projektet og så vil jeg oprette en projektbruger for gruppen. Her er et link til posten i holdets wikiartikel hvor tabellen findes:http://rtgkom.dk/wiki/2013PrgC33#Registrering_af_arbejdsgrupper.2C_problemformulering_mm.2C_Gkb_12:33.2C_28_February_2014_.28CET.29

  • Journal: Aflever journalen som et PDF dokument. Inkluder meget gerne jeres navne og fagets navn, samt ordet Journal i filnavnet og brug ikke mellemrum eller specielle tegn som ikke er i ASCII tabellen. Erstat ø med oe og æ med ae og å med aa og erstat mellemrum med underscore. Et eksempel på et filnavn for journalen kan således blive: Soeren_Soerensen_Aage_Aagesen_Journal_i_Programmering_C.pdf
  • Produkt: Hvis produktet består af en enkelt eller meget få filer, så upload dem bare enkeltvis. Men hvis det handler om en eller flere store filer eller mange filer og evt. mapper, så pak det hele i et .zip arkiv og giv det gerne et navn i retning af Soeren_Soerensen_Aage_Aagesen_Produkt_i_Programmering_C.zip.

Denne tydelige måde at navngive filerne på vil lette arbejdet for eksaminator og censor når de skal downloade alle filerne og holde rede på hvem har lave dem.

For at aflevere på projektbrugeren for projektet på rtgkom.dk, så logger du på serveren med dit vanlige userID og password, f.eks. med WinSCP eller FileZilla, og browser op til mappen "files", der ligger mappen "projects", og din projektbruger har sit home directory i denne mappe.

Hvis produktet er et web-produkt, så aflever det gerne således på projektbrugeren på rtgkom.dk, at det virker og kan afprøves.

Hvis I ikke kan huske navnet på jeres projektbruger, så klik på "Projekt publisher" på rtgkom.dk, for at gå til listen over projektbrugere. Her er et link til listen: http://www.rtgkom.dk/prpub2.php

Afleveringen skal placeres i mappen public_html. Aflever de samme filer som på Fronter, altså både journal og produkt, og hvis produktet er et web-produkt, så "installer" det således at det kan afprøves.

NB at afleveringsdatoen var oprindelig 8. Maj. Den blev senere ændret til den 9. Maj, og så igen til den 15. Maj til at koordinere med digital aflevering af Informationsteknologi B på Fronter og på rtgkom.dk.

Projektbeskrivelser, Gkb 10:54, 19 March 2014 (CET)[edit]

Der blev arbejdet med forbedring af projektbeskrivelserne med støtte i vores skabelon for projektbeskrivelser, http://rtgkom.dk/wiki/Guide:Projektbeskrivelse_og_rapport#Projektbeskrivelsen.

Finpudsning af problemeformulering og afgrænsning af den del af løsningsforslaget som skal implementeres, samt valg af værktøjer er ikke helt gennemført i alle grupper. Disse aspekter ved projektet skal blandt andre defineres i projektbeskrivelsen.

Den skal oploades til projektbrugeren, helst straks i dag!

Af interessante problemstillinger som blev diskuteret i grupperne kan nævnes:

  1. Modellering og animation af vand Vi diskuterede forskellige vinkler at angribe denne problemstilling på. En var at lave en kraftigt forenklet model af en verden med kun 10 x 10 3D bokse, hvor nogen af de nederste rækker kunne representere vandet og så lade en fast, altså en hård, partikel falde fra toppen f.eks. fra position (5,0) og forsøge at beregne hvordan vandpartiklerne forskubbes når denne patikel/objekt rammer vandet. Vi skal også vælge massefylde for både vandet og det hårde objekt, vælge tyngdeacceleration og startbetingelser for animatione. Vi skal i vores model bestemme hvordan objektets impulsenergi overføres til det vandpartikel det støder i mod, og hvordan den overføres til de andre vand-bokse. Vi diskuterede at for at komme videre med dette behøver vi nok anvende metoden Finite Element Method, http://en.wikipedia.org/wiki/Finite_element_method, og det forventer vi at kunne bruge Python og Visual Python til.
  2. Kravfangst i softwareudviklingsprojekter i almindelighed Hvor godt fungerer User Stories i XP til at fange krav? Hvor meget af de generelle og ofte indlysende krav (krav som ikke har nogen direkte funktion overfor brugeren men som skal være opfyldt for at produktet virker, ofte kaldt ikke funktionsmæssige krav eller på engelsk "non functional requirements") skal formuleres i kravspecifikationen.
  3. Persona-metoden som Lene Nielsen har opfundet, se her beskrivelse af hendes bog "Persona – brugerfokuseret design", http://personas.dk/?p=267, som er udgivet i 2011. Se også en plakat,http://personas.dk/?p=96, som beskriver og visualiser de ti trin i hendes metode.

Projektbeskrivelser og Spike Solutions, Gkb 08:32, 12 March 2014 (CET)[edit]

Projektbeskrivelser[edit]

I dag skal alle projektbeskrivelser uploades til public_html mappen på den projektbruger som er oprettet til jeres projekt. Hvis I ikke har registreret jeres projekt i tabellen nedenfor, så gør det nu, og så opretter jeg projektbrugeren. I logger på med jeres foretrukne program til upload af filer til vores webserver, f.eks. WinSCP eller CyberDuk, og så ligger home-mapperne for projektbrugerne i /files/projects mappen. De har navne som 2013prgc33_eksamensproj_grXX. I kan gendkænde jeres projektbruger på gruppenummeret og på mapperne med jeres brugerID som ligger inde i home-mappen.

Spike Solutions[edit]

Det kan være en god idé hurtigt at identificere de kærneproblemer som findes i jeres projekt og lave Spike Solutions til at reducere den tekniske usikkerhed i jeres projekt. Det kan f.eks. få betydning for den næste opdatering af resurseplanen. Se her hvordan Spike Solution defineres i Extreme Programming, http://www.extremeprogramming.org/rules/spike.html.

Registrering af arbejdsgrupper, problemformulering mm, Gkb 12:33, 28 February 2014 (CET)[edit]

Registrer jeres eksamensprojekt her. I kan arbejde alene eller i grupper. Jeg opretter projektbrugere for arbejdsgrupperne og projektbeskrivelsen bliver noget af det første som I skal aflevere der.

Tabellen har kolonner for projektets titel og undertitel. Det er for at I har behov for et navn på jeres projekt for lettere at kunne tale med hinanden og andre udenfor projektgruppen om det.

Tabellen har en kolonne for problemformuleringen, og bemærk at det er en direkte formulering af det problem som I vil forsøge at løse i jeres projekt som skal registreres i tabellen. Det er bare en sætning, evt. lidt lang og med en bisætning. Jeg vil ikke have lang problemformulering med karakter af analyse eller flere problematiserende sprøgsmål som jeg selv skal analysere for at kunne gætte mig til hvilket problem I vil arbejde med.

Tabellen har kolonner til definition af den overordnede kommunikationsmæssige sammenhæng som I forestiller jer at jeres løsning på problemet skal indgå i. Det er fordi det i mange tilfælde både er naturligt og oplagt at jeres produkter løser praktiske problemer for afgrænsede grupper af (målgrupper) af mennesker i samfundet, -men det er ikke et karv at der skal være sådan en mening i jeres projekter, så det kan evt. være lidt søgt at udfylde disse celler, f.eks. hvis jeres produkt er af en lidt mere grudforskningsmæssig karakter.

Tabellen indeholder en kolonne til registrering af de værktøjer som I forestiller jer at I vil anvende til at realisere jeres produkt. Det kan selvfølgelig være at I finder bedre egnede værktøjer inden I er færdige med projektbeskrivelsen og begynder at implementere den første prototype, -men jeg vil gerne høre hvilke idéer I har om værktøjer på nuværende tidspunkt.

2013PrgC33-Eksamensprojekt - registrering af arbejdsgrupper
Udfyld nedenstående skema...
Gruppenr. Gruppemedlemmernes navne Problemformulering Titel Undertitel Afsender Budskab Modtager (målgruppe) Kanal (medie) Effekt hos modtageren Tools
0 Karl Bjarnason Det problem som jeg vil forsøge at løse i mit projekt er at mange gymnasieelever har svært at forstå betydningen af størrelsen og fortegnet på konstanterne a, b og c i en andengradsligning. Stor eller lille, positiv eller negativ Konstanternes betydning i en andengradsligning Forlaget Virtuel Læring AS Du kan godt lære matematik, du kan lære på egen hånd, ... Gymnasieelever i Danmark Program som formidles over WWW. Bedre kundskaber om andengradsligningen og deraf bedre selvtillid og ... Lazarus (open source efterligning af Delphi!)
1 Alexander og Jacob Problem formulering – Alexander L og Jacob H

Vi skal lave en hjemme side, som eksamens projekt, der skal indeholde en database, som oplyser antal varer, der er tilgængeligt. Der skal være et galleri som automatisk skal registrere de billeder der bliver uploadet til hjemmesiden. Dynamisk metode, hvor man kan lave opdateringer til hjemmesiden. En Admin side med et login, som kan administrere ordre og de ændringer man kan lave til siden. En forside med basisk information og en FAQ, frequently asked questions, samt en side sammen med måder at opdrætte planterne på. Vi vil lave hjemmesiden ved hjælp af: HTML, CSS, PHP, MySQL, javascript / Jquary.

Hjemmeside, med dynamiske funktioner Hjemmeside med køb og salg Erling At lave en salgs hjemmeside, som går efter en speciel målgruppe, der er går op i blomster Alle over 30 Hjemmeside www.pleioneworld.dk/ Nem og praktisk måde at sælge blomster One.com webeditor, sublime 2 eller notepad++
2 Stefan W, Mathias, Emil Z Børn kan med vores produkt lære vigtigheden i at passe dyr, samt lære at løse problemstillinger, man skal løse for at komme videre. Fiskespil Med måde Os Lær at passe dyr og tage ansvar Børn og barnlige sjæle Computer, telefon Glæde, underholdning
3 Kasper Christoffersen & Oliver Mangelsen Børn og unge vil oftere og oftere some tiden går, også i skolerne, heller side ved ders computer end med blyant og papir, som man ellers før har gjort. Matematisk læringsprojekt Matematik for mellemtrinet Undervisningsministeriet At have en hjemmesidde, hvorpå man kan logge ind og lave sin matematik. Folkeskoleelever på mellemtrinet www. Nem og praktisk måde, at lave sin matematik på, og samtidig får man en hurtig respons da databasen kender til svarene. Sublime 2
4 Magnus Lund Clausen Det problem som jeg vil forsøge at løse er at nyhedsstrømmen der kommer til en ikke bliver uoverskuelig, og derfor mindre attraktiv at læse. Programmering eksamensprojekt RSS-fees Mig selv At nyheder bliver nemmere at læse, i form af RSS-feeds. Alle danskere mellem 25 og 50. WWW Nemmere adgang til nyheder, som er nemmere at overskue. HTML, JavaScript og Sublime 2.
5 Gustav, Kasper D og Ditlev På ens mobiltelefon er det besværligt at checke sit skema på Lectio og det kan ikke lade sig gøre, hvis man ikke har forbindelse til internettet eller Lectio har problemer. Herudover kan det tage lang tid at komme hen til ens skema, hvilket er som resultat af både dataforbindelserne og placering af hjemmesiden. Lectio app App Lectio At have adgang til lectio nårsomhelst. Lectio brugere Play store Nem adgang til lectio skema Eclipse, Android SDK og Java
6 Daniel Galster Problemstillingen består i at fremstille en Android-applikation til social interaktion. Inspiration vil hentes fra applikationerne Snapchat og Draw Something. Social interaktion Applikationsudvikling Alle i aldersgruppen 13-25 år. Internaionalt. Smartphone applikation udgives på App Store og Google Play. Kan fremstilles i Corona Labs, Android SDK,
7 Sofus Hansen Projekt beskrivelse:

Indledning: Projektet jeg vil lave, laver jeg i samarbejde med Informations teknologi, hvor jeg vil forsøge at efterligne nogen aspekter ved vand.

Vand Vand Sofus Hansen partikler på collision Spil lavere Computer Vand Unity JavaScript eller C-Sharp
8

Anton, Mads Nysom & Mikki Karlsen

Projektet går ud på at designe et it-miljø dom er nemt at programmere på og kan bruges via smartphone, det bliver designet til dem som ikke er vant til at programmere eller slet ikke har prøvet det før.

Programmet bliver også relevant for virksomheder som f.eks. skal lave et spørgeskema til en markedsundersøgelse.

Vi vil bruge et gratis program, i form af visual studio express, og vi vil fokusere på at udvikle til Microsoft platformen og specielt deres smartphones.

Fortolker til Drag and Drop i Windows

Udvikling af en fortolker til etablering af Drag and Drop funktionalitet på Windows platformen samt nem læring af it-miljø (via guides og tutorials)

Man kan nemt lære et programere, hvis det bliver gjort nemt tilgængeligt.

Vores målgruppe er alle personer i aldersgruppen 15-60 år, som har en lille forståelse for brug af computere og smartphones. Programmet kan være relevant for folkeskole elever i 9. klasse, som introduceres til programmering eller som bare vil lave noget dynamisk og interaktivt på sin mobil.

Smartphones(Windowsphone)

9 Sebastian Holtze, Nicolai Christensen og Julius Pedersen Vi vil i samarbejde med vores nuværende IT- og Teknologiprojekt lave et shopping cart system til en hjemmesiden vi arbejder på i IT. Shopping cart systemet skal bygges af PHP og evnt. af HTML5. Internethandel Shopping cart system. Internet butik.(Hjemmeside) At kunne købe mere end en ting af gangen. Ældre mennesker fra omkring 55 år og op. Det er dem produktet vi skal lave i teknologi appellere til. Internettet. Mulighed for at købe produkter fra hjemmesiden Notepad++. Webbrowsere til tests. Vi vil bruge PHP og evnt. HTML5 til at lave systemet.
10 Christian Anderson Jappe Jeg vil lave et program der kan generere højdeværdier for tilfældigt genererede landskaber, der så kan indkorporeres i diverse spil. Jeg vil benytte mig af et system kendt som "Diamond-square" algoritmen. Jeg vælger at arbejde med dette for erfaringens skyld. Tilfældig landskabs generering Diamond-square algoritmen. Mig Erfaring Spilproducenter, mig selv inkluderet Kode, GML indtil videre, men koden kan simpelt indkorporeres i andre programmeringssprog Landskaber :P Game Maker
11 Jesper Det problem som jeg vil arbejde med i mit projekt er at mange som surfer på nette mangler ofte en måde at lave helt enkle udregninge som f.eks. omregning fra danske til svenske kroner. Dette har jeg tænkt at løse vha. en webside eller et program som folk kan downloade, f.eks. fra mit StudieWeb, og installere på sine computere. Kan du ikke regne? Webbaseret regnemaskine Mig Også du kan regne, brug min webbaserede regnemaskine! Mindre øvede netbrugere WWW og mit StudieWeb JavaScript og HTML5 funktionalitet, CSS osv.
12
13 Stefan Parbst Jeg vil lave en pathfinding til fjenderne i mit spil Pathfinding i Unity Unity pathfinding Stefan Parbst Fjenderne skal kunne bevæge sig Spillerene Spil En bedre oplevelse Unity3D
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

Eksamensprojekt, Gkb 08:31, 26 February 2014 (CET)[edit]

Vi starter eksamensprojektet i dag. Oplægget kommer at ligne oplægget fra 2013, se her: http://rtgkom.dk/~gkb/prg/2012-2013/2013PrgC-Oplaeg-til-eksamensprojekt.pdf

Vi afslutter den 8. maj. (NB at denne dato blev senere ændret til den 9. maj, og så igen til den 15. maj til at koordinere med digital aflevering af InfB på Fronter og på projektbruger og/eller på studieweb på rtgkom.dk. Afsnittet "Hvad skal afleveres?" gælder fortsat, men der skal altså ikke afleveres en papriversion af journalen. Hardware, f.eks. Raspberry Pi's eller Arduino'er, som evt. udgør en del af produktet, skal afleveres i MediaLab.)

Opdateret version med relevante datoer i tidsplanen kommer her: http://rtgkom.dk/~gkb/prg/2013-2014/2014PrgC-Oplaeg-til-eksamensprojekt.pdf

Hvis du mangler idér til dit projekt, så se gerne vores liste over ting som vi gerne vil have til at virke i MediaLab, se her http://rtgkom.dk/wiki/MediaLab:_Drift_og_vedligehold#To_Do

Afslutning af forløbet Applikationsudvikling, Gkb 08:23, 13 February 2014 (CET)[edit]

Vi skal nu afslutte forløbet Applikationsudvikling, som vi har lavet sammen med IT faget. Dokumenter arbejdet i forløebet på følgende måde på dit StudieWeb.

  1. Lav et kort notat illustreret med nogle relevante skærmbilleder fra udviklingsarbejdet.
  2. Link til afleveringen i IT faget.
  3. Beskriv i notatet hvordan du har arbejdet med kodning i forløbet. Hvilke programmeringssprog, udviklingsværktøj, biblioteker, funktioner osv., gerne med skærmbilleder fra kodningen i udviklingsmiljøet.

I næste modul kan vi så have nogle præsentationer hvor I med afsæt i denne dokumentation forteller klassen hvad I har arbejdet med i forløbet.

Når du er færdig med at lægge dokumentationen op, så begynd at forberede præsentationen.

Hus og have, aflevering af rapport og website, --Gkb 12:33, 9 December 2013 (CET)--Gkb 12:58, 3 December 2013 (CET)[edit]

Christoffer er vikar for mig i dag.

Aflever rapport og website for projekt "Hus og have" på projekt-user'en som er oprettet til formålet. Brug vores Project publisher funktion til at browse frem til websitet. Der er links nederst i listen her: http://www.rtgkom.dk/prpub2.php.

Filerne about.txt, thumb1.jpg, thumb2.jpg og thumb3.jpg skal erstattes med filer med samme navn som har indhold som er relevant for jeres projekt. De skal bruges af PHP scriptet som laver websiden med den halvgrønne baggrund, -men det virker ikke, noget er i vejen, men når vi finder fejlen, så bruges indholdet i disse filer altså til at præsentere jeres projekter på disse sider. Det påvirker ikke jeres website!!!

Jeg opretter projektusers for jer når I har registreret jeres arbjedsgruppe i listen i posteringen nedenfor fra den 9. december.

Hus og have, registrering af arbejdsgrupper til brug ved oprettelse af projektbrugere, --Gkb 12:33, 9 December 2013 (CET)--Gkb 12:58, 3 December 2013 (CET)[edit]

Vi kan bruge specielle projektbrugere til at aflevere projekter som flere elever har arbejdet sammen på. Til at oprette projektbrugere i vores system, så behøver vi brugernavnene på de brugere som er med i arbejdsgrupperne. Tilføj derfor jeres brugernavne i listen nedenfor. Kontroller at brugernavnet er korrekt, kopier det gerne fra URL'en til jeres StudieWeb.

Brugernavnene kopierer vi så ind i vores OEP program (et Perl script, lavet af Nicholas Mossor Rathmann, tidligere elev på RTG) når vi opretter projektbrugeren for jeres projekt. Hvis der er fejl i brugernavnet, så mislykkes oprettelsen af projektbrugeren.

Ved hjælp af vores Projekt publisher, http://www.rtgkom.dk/prpub2.php, kan du se en liste over alle projekter som vi har oprettet projektbrugere for.

  1. Nicolai Obel Christensen, Ditlev Stjerne: nicolaioc11, ditlevsss11
  2. Sebastian Holtze-Petersen, Julius Pedersen: sebastianjhp11, juliusp11
  3. Stefan Westermann, Jesper Larsen, Niclas Harplod: stefanew11, jesperml11, niclasha10
  4. Mathias Raaberg, Sofus Hansen, Christian Jappe: mathiasr11, christianaja11, sofush11
  5. Emil Zuschlag, Stefan Parbst: emilzc11, stefanap11
  6. Jacob Hennecke, Kasper Damgaard, Gustav Gregersen: jacobfh11, kaspermd11, gustavbg11
  7. Anton Christiansen, Alexander Lauritsen: antonfc11, alexanderhl11
  8. Ikke opretted: Kasper Christoffersen, Oliver Mangelsen, Daniel Galster:
  9. Ikke opretted: Mads Nysom, Mikki Karlsen:
  10. Fornavn og efternavn, Fornavn og efternavn, Fornavn og efternavn: userID, userID, userID

Lisp, Scheme, Dr Racket, Hal Abelsson, Borland Pascal, Delphi, Object Pascal, Lazarus IDE, --Gkb 09:54, 21 November 2013 (CET)[edit]

Vi diskuterede og afprøvede to "nye" programmeringssprog i dag, Scheme og Object Pascal. Vi bruget så Dr Racket til at teste lidt Scheme og Lazarus IDE til at teste lidt Object Pascal.

Dr Racket[edit]

Lazarus IDE[edit]

  • Vi downloadede og installerede Lazarus IDE fra http://www.lazarus.freepascal.org/
  • Vi lavede en spike solution som vi kaldte "spikehelloworld" med et inputfelt, en kommandoknap og en label. Når man trykker på knappen så skal den tekst man har indtastet i inputfeltet vises i/på label'en.

Tekster og billeder, grafisk design, kommunikationsdesign, licens, roughs mm, --Gkb 09:44, 14 November 2013 (CET)[edit]

Torsdag 14. nov. 2013, 1. modul, lokale C3104 I dag fortsatte vi arbejdet med at lave et website for projektet "Hus og have". Vi diskuterede blandt andet følgende aspekter og indhold:

helloworld_for_mysql.php --Gkb 02:43, 14 November 2013 (CET)[edit]

Sidste gang connect'ede vi til MySQL serveren og nu vil vi gerne hente data fra den.

Her er et udkast til en php fil til at teste om vi kan hente alle data fra en tabel i vores MySQL database. PHP koden er kopieret fra http://php.net/manual/en/mysql.examples-basic.php og skal selvfølgelig tilpasses til vores situation.

<HTML>
  <HEAD>
    <META ...>
	<TITLE>
		Hello World for testing use of MySQL
	</TITLE>
  </HEAD>
  <BODY>
    <P>
		This is a Hello World test file to test if the MySQL server is working and if I can get data from a table in it.
	</P>
	<P>
		I plan to use an example from http://php.net as a template. The example is here: http://php.net/manual/en/mysql.examples-basic.php.
	</P>
	<?php
	// Connecting, selecting database
	$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
		or die('Could not connect: ' . mysql_error());
	echo 'Connected successfully';
	mysql_select_db('my_database') or die('Could not select database');

	// Performing SQL query
	$query = 'SELECT * FROM my_table';
	$result = mysql_query($query) or die('Query failed: ' . mysql_error());

	// Printing results in HTML
	echo "<table>\n";
	while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
		echo "\t<tr>\n";
		foreach ($line as $col_value) {
			echo "\t\t<td>$col_value</td>\n";
		}
		echo "\t</tr>\n";
	}
	echo "</table>\n";

	// Free resultset
	mysql_free_result($result);

	// Closing connection
	mysql_close($link);
	?>
	</BODY>
</HTML>

Website for projekt Hus og have --Gkb 18:05, 7 November 2013 (CET)[edit]

Vi fortsatte forberedelserne for at lave et website til markedsføring af produktet som I laver projektet.

MySQL Hello World med MediaLab's webserver[edit]

Klassen fik i går tilsendt via email passwords til vores MySQL server, ogg i dag ville vi prøve at se om vi kunne få et hul i gennem til serveren. Vi lavede følgende:

  • Loggede på MySQL serveren via phpMyAdmin og vi
  • lavede en ny tabel og vi indsatte data i nogle rækker/poster/records og vi
  • lavede et PHP script og uploadede det til vores StudieWeb og vi
  • testede om det kunne "connect'e" til serveren, og det gik godt.

Så nåede vi ikke mere i fælleskab, men nogle af eleverne fik også afprøvet at hente alle data i tabellen ned i webbrowseren.

2013-10-10, torsdag, modul 1: Hus og Have, website til markedsføring Gkb[edit]

Vi starter nu aktivt arbejde med SO-forløbet "Hus og have" hvor vi skal lave et website til marknadsføring af det produkt som I har eller er ved at designe og fremstille i Teknologi A. Vi skal bruge client-server teknologierne PHP og MySQL.

PHP og MySQL[edit]

Vi begynder med at se på disse værktøjer hver for sig, og så skal vi lære at kombinere dem i et enkelt website hvor brugeren kan indtaste data, f.eks. sin e-mail adresse, som ved hjælp af PHP lagres i en MySQL database på serveren. Serveren kan så evt. sende en e-mail til brugeren med mere information.

2013-09-26, torsdag, modul 1: Numerisk integration og opgaven om 3D modellering med Visual Gkb[edit]

Numerisk integration[edit]

Vi udviklede en pseudo-kode (halv-kode, altså et en halvfærdig beskrivelse) for et program til at integrere funktionen f(x)=x**2 fra x=0 til x=1. Vi tegnede grafen på tavlen og diskuterede hvordan integralet kan tilnærmes ved at opsummere del-arealer under kurven.

Vi integrerede funktionen analytisk og konstaterede at integralet fra 0 til 1 nok har værdien 1/3, hvilket vi altså skal forvente at vores program også tilnærmelsesvis skal give.

På baggrund af denne pseudokode udviklede vi en prototype i editoren i IDLE. Vi tilføjede detaljer og rettede en del fejl og vi sluttede med følgende program, som vi kunne bruge til at konstatere at præcisionen vokser når vi øger antallet af del-intervaller. Denne tidlige prototype har funktionsudtrykket hard-kodet, men vi har et ønske om senere at tilføje funktionalitet således at brugeren selv kan indtaste funktionsudtrykket som et Python udtryk (expression).

#Integration af en funktion som brugeren selv kan indtaste funktionsudtrykket for.
a=input("a:") #startværdi på x-aksen
b=input("b:") #slutværdi på x-aksen
n=input("n:") #antal delintervaller

deltaX=(b-a)/float(n) #delintervallernes bredde udregnes her

x=a #Definition af startværdien for vores numeriske integrale.

Areal=0 #Bare for at definere (og nulstille) variablen.

while x<b:
    fx=x*x               #funktionsværdien i x udregnes her
    delAreal=deltaX * fx #delarealet udregnes her
    Areal=delAreal+Areal #Opsamle bidragene til arealet
    x=x+deltaX           #Inkrementering af kontrolvariablen for løkken
    #print x, Areal

print x, Areal

Opgaven om 3D modellering med Visual[edit]

Oplægget ligger under Opgaver og oplæg, se her 2013PrgC33:_3D_modellering_med_Visual Afleveringsmappen 3d_modellering_med_visual er oprettet i din html mappe på dit StudieWeb.

2013-09-19, torsdag, modul 1: Numerisk differentiation Gkb[edit]

Vi gennemgik hvordan man kan lave et program som udregner en tilnærmelse til differentialkvotienten for funktionen f(x)=x**2 for x værdier på intervallet fra 0 til 10. Og vi så hvordan resultatet blev mere præcist når vi mindskede step-størrelsen (øgede antal del-intervaller).

2013-09-12, torsdag: Lærebogen, gcurve.plot Gkb[edit]

Lærebogen[edit]

Vi gennemgik i plenum teksten i lærebogen, til og med kapitel 1. Begreberne blev diskuteret og eksemplificeret lidt vha. flere afstikkere til blandt andet DEBUG kommandoen i DOS prompten i Windows (lav-niveau sprog, low-level), debuggeren i IDLE, rutediagram for løsning af 2. grads ligninger (algoritme, program), Lazarus IDE (cross platform).

gcurve.plot[edit]

Vi testede hvordan man kan hurtigt lave en graf for en funktion med gcurve objektet i visual.graph. Vi valgte at bruge lave en graf for sin(x) fra 0 til 2*pi.

#from visual import *
from visual.graph import *
kurve = gcurve(pos=(0,0,0))

for x in arange(0,2*pi,0.1):
    print x
    kurve.plot(pos=(x,sin(x),0))

http://rtgkom.dk/~gkb/billeder/sinus_graf.png

2013-08-29, torsdag: Animation af translation, rotation og resizing med Visual Gkb[edit]

Vi fortsatte vores undersøgelse og leg med modulet Visual for Python. Sidste gang så vi hvordan vi kan lave animation hvor et objekt bevæger sig efter en ret linje, -det kaldes translation. I dag vil vi lege videre og se hvordan vi både kan rotere og ændre størrelsen på 3D objekter.

Vi diskuterede først en grov plan for vores animation. Vi besluttede at udskifte hovedaktøren, kuglen, med en boks, -det er lettere at se om en boks roteres end en kugle. Vi bestemte at animationen skulle indeholde følgende dele eller scener. Dette er egentlig et udkast til en kravspecifikation:

  1. Boksen kommer kommer til syne, laves, i koordinatsystemets centrum.
  2. Boksen glider elegant ud ad x-aksen til (10, 0, 0).
  3. Boksen roterer 360 grader rundt om sit eget centrum. (Hvilken akse?)
  4. Boksen roterer 360 grader rundt om origo, altså (0, 0, 0).
  5. Boksens sidelængder fordobles.

Vi tog afsæt i koden fra sidste gang og trænede lidt editering med keyboardet, diskuterede for-sætningen (http://docs.python.org/2/reference/compound_stmts.html), samt forskellen på range() og arange()(http://docs.python.org/2/library/functions.html og http://docs.scipy.org/doc/numpy/reference/generated/numpy.arange.html).

Vi udviklede fælleskab følgende kode som udkast til løsning af ovenstående krav.

from visual import *

xakse = cylinder(pos=(0,0,0), color=color.red,   axis=(10,0,0), radius=.05)
yakse = cylinder(pos=(0,0,0), color=color.green, axis=(0,10,0), radius=.05)
zakse = cylinder(pos=(0,0,0), color=color.blue,  axis=(0,0,10), radius=.05)


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

#Translation
for x in range(11):
    box1.pos= (x,0,0)
    rate(2)

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

#Rotation om origo
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
    rate(20)

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

Senere om dagen tilføjede jeg et Curve-objekt således at boksen efterlader en kurve når den roterer rundt origo. Efter den tilføjelse så koden sådan ud.

from visual import *

xakse = cylinder(pos=(0,0,0), color=color.red,   axis=(10,0,0), radius=.05)
yakse = cylinder(pos=(0,0,0), color=color.green, axis=(0,10,0), radius=.05)
zakse = cylinder(pos=(0,0,0), color=color.blue,  axis=(0,0,10), radius=.05)


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

#Translation
for x in range(11):
    box1.pos= (x,0,0)
    rate(2)

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

#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))
    curve1.append(box1.pos)
    print box1.pos
    rate(20)

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

2013-08-22, torsdag: 3D modellering og simpel animation med translation vha. Visual Gkb[edit]

Visual er et modul som kan bruges med Python.

  • Vi downloadede og installerede Python og Visual fra http://vpython.org.
  • Vi gennemgik med regneeksempler hvordan vi kan bruge Python shell'en til at regne nogle opgaver hvor svaret indeholdt rigtig mange cifre, f.eks. 2 ** 500.
  • Vi gennemgik hvordan vi kan bruge det indbyggede hjælpesystem i Python til at få information om installerede moduler (modules), keywords i programmeringssproget (keywords) og forskellige opgavetyper (topics).
  • Vi gennemgik hvordan vi kan bruge dokumentatione på http://vpython.org/contents/docs/index.html til at finde information om hvordan vi kan bruge objekterne i Visual i vores programmer.
  • Vi gennemgik hvordan man laver et program som viser tre smalle cylindre, en for hver akse i koordinatsystemet, for at vi bedre kan orientere os.
  • Vi gennemgik hvordan man flytter en kugle fra et sted til et andet sted på x-aksen.
  • Vi gennemgik hvordan man lader kuglen "glidende" flytte sig fra et sted ude på x-aksen til origo.

Vi lavede flere eksperimenter, både i Python shell'en og i editoren i IDLE, og her kan slutresultatet ses.

from visual import *

kugle1= visual.sphere(color=color.yellow, radius=0.5)
xakse = cylinder(pos=(0,0,0), color=color.red,   axis=(10,0,0), radius=.05)
yakse = cylinder(pos=(0,0,0), color=color.green, axis=(0,10,0), radius=.05)
zakse = cylinder(pos=(0,0,0), color=color.blue,  axis=(0,0,10), radius=.05)

kugle1.pos = (10, 0, 0)

for x in range(10):
    kugle1.pos= (10-x,0,0)
    rate(2)

2013-08-15, torsdag: Første modul, information om faget mm. Gkb[edit]

Vi diskuterede faget og værktøjer, blandt andet at vi bruger Python som vores primære programmeringssprog og IDLE, som følger med Python, som det primære udviklingsmiljø. Ud over det vil vi afprøve forskellige andre sprog og udviklingsmiljøer i kortere forløb. I projekter vi værktøjsvalget oftest være helt frit, bare værktøjet er gratis, frit og lovligt for jer at anvende.

Vi begyndet at læse og udføre de øvelser som er i teksten i lærebogen som vi bruger i faget, nemlig How to Think Like a Computer Scientist, Learning with Python, http://www.openbookproject.net/thinkcs/python/english2e/