#ubuntu-nl-mwanzo-klas 2011-03-28
<leoquant> niekie ping
<RawChid> FYI, in #ubuntu-classroom zijn de hele avond dingen over het organiseren van Jams
<leoquant> yep
#ubuntu-nl-mwanzo-klas 2011-03-30
<Ronnie> Goede avond allemaal
<Ronnie> wie zijn er allemaal voor de workshop GPGInleiding => Code of Conduct aanwezig?
<Ronnie> Ik zal een erg korte introdcutie geven over mezelf...
<Ronnie> Ik ben Ronnie, laatste jaar student scheikunde (HBO), Ubuntu is sinds 2006 een grote hobby van me
<Ronnie> Ik ben actief op verschillende gebieden binnen Ubuntu-nl en Ubuntu internationaal
<Ronnie> Meer info: https://wiki.ubuntu.com/ronnie.vd.c
<Ronnie> Vandaag ga ik dus de workshop Code of Conduct (Ubuntu gedragscode) ondertekenen geven
<Ronnie> zodra je deze gedragscode ondertekend hebt (en je ernaar gedraagt) mag je jezelf Ubuntero noemen
<Ronnie> Wat is de CoC
<Ronnie> De Code of Conduct (CoC) is een gedragscode. Deze gedragscode heeft betrekking op ons gedrag als leden van de Ubuntu-gemeenschap op ieder forum, mailinglijst, wiki, website, Internet Relay Chat (IRC)-kanaal, installatieparty, publieke samenkomst en privÃ©-correspondentie. Ubuntu-bestuursorganen zijn uiteindelijk verantwoordelijk voor de Ubuntu-gemeenschapsraad en zullen bemiddelen bij ieder geschil over het gedrag van een lid van de geme
<Ronnie> Kortweg: Wees attent, Wees respectvol, Sta open voor samenwerking, Wanneer we het niet eens worden, zullen we hulp van anderen inschakelen, Wanneer we twijfelen, zullen we hulp vragen, Houd rekening met anderen als u stopt.
<Ronnie>  Lees de volledige gedragscode op:
<Ronnie> https://launchpad.net/codeofconduct/1.1 (engels)
<Ronnie> http://wiki.ubuntu-nl.org/community/CoC/Gedragscode (vertaling)
<Ronnie> Het onderteken proces bestaat uit een aantal stappen:
<Ronnie> 1. Een persoonlijke GPG sleutel aanmaken
<Ronnie> 2. De sleutel publiekelijk maken
<Ronnie> 3. De sleutel op Launchpad aan je account koppelen
<Ronnie> 4. De gedragscode ondertekenen
<Ronnie> Elk van deze stappen zal ik rustig uitleggen
<Ronnie> Zijn er Niet-Ubuntu gebruikers aanwezig (Kubuntu, Xubuntu etc)?
<Ronnie> Zo te zien kunnen we door
<Ronnie> === Stap 1 ===
<Ronnie> ga naar: Systeem -> Voorkeuren -> Wachtwoorden en Sleutels
<Ronnie> dit is het programma wat alle sleutels en wachtwoorden bheerd
<Ronnie> hier staan dus de wachtwoorden van je email accounts, draadloos netwerken etc
<Ronnie> Om een nieuwe GPG sleutel aan te maken (wat het precies is leg ik later uit, eerst gaan we de praktijk doen) ga naar: Bestand -> Nieuw
<Ronnie> overigens is over het "Wachtwoorden en Sleutels" programma meer info te vinden op deze wiki: http://wiki.ubuntu-nl.org/community/Seahorse#PGP-sleutel
<Ronnie> We kiezen in het nieuwe dialoog voor GPG-Sleutel
<Ronnie> PGP-sleutel*
<Ronnie> Vul in het nieuwe scherm je naam, email in. Een commentaar mag ook
<Ronnie> Kan tot nu toe iedereen het bijhouden?
<Ronnie> erkan^: kan je een voorbeeld geven --> commentaar ?
<Ronnie> ik heb zo geen idee, het is pas nuttig als je meerdere verschillende sleultels hebt
<Ronnie> leeglaten mag gewoon
<Ronnie> Klik nu op Aanmaken
<Ronnie> het maken van de sleutel kan een tijdje duren
<Ronnie> hannie: Is standaard RSA ok?
<Ronnie> ja RSA 2048 bits is goed
<leoquant> wachwoord?
<Ronnie> oh ja...
<Ronnie> je mag hier een wachtwoord ingeven....
<Ronnie> met dit wachtwoord wordt je sleutel beveiligd, mocht iemand deze 'gestolen' hebben.
<Ronnie> Het is dus een extra beveiliging
<Ronnie> wil je gebruik maken van de sleutel, dan moet je wel elke keer dat wachtwoord opgeven
<Ronnie> Laat je het wachtwoord leeg, dan zul je de sleutel (privÃ© deel) erg veilig moeten bewaren
<Ronnie> erkan^: ook geen verloopdatum?
<Ronnie> verlopdatum is ook niet nodig hier
<leoquant> <erkan^> hoe zal ik erg veilig bewaren als het wachtwoord is leeg, Ronnie ?
<Ronnie> je kunt de PGP-sleutel zien als een soort ID-kaart of passpoort (zonder foto)
<Ronnie> wordt die gestolen, dan kan iemand zich als jou voordoen
<Ronnie> zelf kies ik er altijd voor om mijn sleutel met een wachtwoord te beveiligen
<Ronnie> erkan^: waar kan ik een wachtwoord vinden, Ronnie ?
<Ronnie> dat wachtwoord zul je zelf moeten verzinnen
<Ronnie> hannie: leoquant, hij is bij mij al minuten bezig
<Ronnie> het kan best een aantal minuten duren
<Ronnie> erkan^: ja, maar waar moet ik een wachtwoord vinden? ik zie nergens een wachtwoord op "Nieuwe-PGP-sleutel venster", Ronnie
<Ronnie> die popup komt zodra je op "aanmaken" klikt
<leoquant> <hannie> Volgens mij stond er in het venster een ander woord dan 'wachtwoord'
<Ronnie> ok, dan gaan we rustig verder
<Ronnie> === stap 2 ===
<Ronnie> de sleutel uploaden naar de sleutel server
<Ronnie> selecteer je sleutel
<Ronnie> (gewoon eenmaal erop klikken)
<Ronnie> Remote -> Sleutels synchroniseren en publiceren
<Ronnie> erkan^: een symbool "wijsvinger met kladblok", Ronnie ?
<Ronnie> nee
<Ronnie> via het menu boven
<Ronnie> Remote -> Sleutels synchroniseren en publiceren (staat een blauwe reload icoon bij)
<Ronnie> in de popup klik op sleutelservers
<Ronnie> en voeg http://keyserver.ubuntu.com:11371 toe als deze nog niet  aanwezig is
<Ronnie> kies in de dropdown 'sleutels publiceren naar' voor "http://keyserver.ubuntu.com:11371"
<Ronnie> en klik dan op sluiten
<Ronnie> iedereen de keyserver toegevoegd?
<Ronnie> klik dan op synchroniseren
<Ronnie> dan gaan we nu naar Launchpad: https://launchpad.net/people/+me/+editpgpkeys
<Ronnie> het sleutel programma nog niet sluiten
<Ronnie> === stap 3 ===
<leoquant> Ronnie, wacht even
<leoquant> <erkan^> sorry ik heb net gesynchorniseerd
<leoquant> leoquant> Ronnie, hoe kan ik een emailadres toevoegen aan launchpad?
<Ronnie> leoquant: dat is nu toch niet nodig voor deze workshop, de standaard email zou gewoon moeten werken
<leoquant> ok
<Ronnie> erkan^: ik zie een "Fingerprint" , Ronnie . wat is dat eigenlijk?
<Ronnie> de fingerprint is een unieke code, die bij jou sleutel hoort. met deze code kun je je eigen sleutel terug vinden op de sleutel-server (en kan ook LP jou vinden)
<Ronnie> De fingerprint gaan we nu opzoeken
<Ronnie> ga naar je sleutel programma en dubbelklik op je zojuist aangemaakte sleutel
<Ronnie> ga naar tabblad Details
<Ronnie> en daar zie je de vingerafdruk (2 regels)
<Ronnie> zier eruit als: 691C EF29 D0A8 E96D 559A 9D06 CE7E 44F2 DDFE BAA5
<Ronnie> erkan^: bedoel je Eigenschappen, Ronnie ?
<Ronnie> ja
<Ronnie> deze code mag je op de launchapd pagina plakken
<Ronnie> klik daarna op "import key"
<Ronnie> erkan^: totaal 10 x 5 codes, Ronnie ?
<Ronnie> 10 x 4
<Ronnie> zodra je dat hebt gedaan, wordt er een email verstuurd, dus kijk je mail na
<Ronnie>  erkan^: dus ik kopieer hem 1e en 2e regels en ik plak hem in fingerprint, Ronnie ?
<Ronnie> ja
<Ronnie> Ok, een deel van de mail zal leesbaar zijn
<Ronnie> een ander deel zal er erg raar uitien
<Ronnie> Heeft iedereen de mail binnen?
<Ronnie> er staat in de mail een deel met '----- BEGIN PGP MESSAGE -----' en '----- END PGP MESSAGE -----'
<Ronnie> kopieer dit deel en open gedit (Toepassingen -> Hulpmiddelen -> Texteditor)
<Ronnie> Sla die op als "coc.txt"
<Ronnie> dat deel is inclusief:  '----- BEGIN PGP MESSAGE -----' en '----- END PGP MESSAGE -----'
<Ronnie> open dan een terminal
<Ronnie> 'cd' naar de directory waar je het bestand hebt opgeslagen
<Ronnie> en voer het volgende commando uit:
<Ronnie> gpg --clearsign coc.txt
<Ronnie> oops
<Ronnie> verkeerde copy/paste
<Ronnie> gpg --decrypt coc.txt
<Ronnie> ^ dat laatste commando
<leoquant> <hannie> gpg of pgp?
<Ronnie> gpg (ja, erg verwarrend)
<leoquant> erkan^> gpg: decrypt_message failed: eof
<leoquant> error
<Ronnie> erkan^: wat is de eerste en laatste regel van dat bestand?
<Ronnie> zodra het decrypten klaar is, open je het bestand coc.txt.asc en open je de link die daar in staat.
<Ronnie> === stap 4 ===
<Ronnie> de cod of conduct ondertekenen
<Ronnie> download de COC v1.1.
<Ronnie> https://launchpad.net/codeofconduct/1.1/+download
<Ronnie> sla het bestand op als "UbuntuCodeofConduct-1.1.txt"
<Ronnie> voer het volgende commando uit in de terminal:
<Ronnie> gpg --clearsign UbuntuCodeofConduct-1.1.txt
<Ronnie> geef je wachtwoord op
<Ronnie> het bestand "UbuntuCodeofConduct-1.1.txt.asc" moet nu aangemaakt zijn
<Ronnie> hannie: In de map Downloads (bij mij) gaan staan?
<Ronnie> ja, als  UbuntuCodeofConduct-1.1.txt in de map Downloads staat
<Ronnie> open https://launchpad.net/codeofconduct/1.1/+sign
<Ronnie> en copy/paste de volledige inhoud van UbuntuCodeofConduct-1.1.txt.asc op die webpagina
<Ronnie> en druk op continue
<Ronnie> op de pagina https://launchpad.net/people/+me/ zou dan het volgende moeten staan: "Signed Ubuntu Code of Conduct:                Yes"
<Ronnie> ofwel, je mag je Ubuntero noemen
<leoquant> dank je wel Ronnie ! tevreden "klanten"
<commandoline> goede uitleg idd, Ronnie! En weer een paar Ubuntero's erbij :)
<Ronnie> dank dank dank
* ChanServ changed the topic of #Ubuntu-nl-mwanzo-klas to: Zaterdag 02-04-11 19.30-20.30 workshop Python :  #Ubuntu-nl-mwanzo-klas|  Info: http://wiki.ubuntu-nl.org/community/mwanzo/Workshop/BasiscursusPython| Leiding: commandoline en stefandevries| Logs op http://irclogs.ubuntu.com |Let ook op eventueel andere workshops| Alle cursisten join ook: #ubuntu-nl-mwanzo, daar kun je vragen stellen aan de workshopleiders.
#ubuntu-nl-mwanzo-klas 2011-04-02
<leoquant> alles gereed hier
<commandoline> ok, bedankt
<StefandeVries> dank je, leoquant
<commandoline> Het is 19:30, dus laten we beginnen met de 8e pythonles!
<commandoline> welkom allemaal, we gaan vandaag verder met waar we vorige week ook al mee bezig waren: OOP
<commandoline> (Object Oriented Programming)
<commandoline> laten we beginnen met het huiswerk van de vorige keer bespreken
<commandoline> http://typewith.me/ep/pad/view/ro.KilZOISYC3j/latest
<commandoline> het leek me goed om de uitwerking daarvan tijdens deze les te maken, omdat het toch een vrij ingewikkeld onderwerp is zoals jullie vorige les hebben gemerkt
<commandoline> de opdracht was om de door ons geschreven class te gaan gebruiken.
<commandoline> om dat te doen, hebben we eerst objecten nodig
<commandoline> want met een class alleen kunnen we niks
<commandoline> We gaan dus de class 'instantieren'; we krijgen dan een 'instantie' zoals jullie vorige week hebben gezien.
<commandoline> vaak wordt in plaats van de term 'instantie' ook de term 'object' gebruikt.
<commandoline> ok, zoals jullie zien heb ik nu een nieuw adresboek aangemaakt
<commandoline> nu gaan we daar een mailadres aan toevoegen
<commandoline> en nog een adres
<commandoline> goed, we moesten het adresboek zoveel mogelijk gebruiken, en een adresboek heeft nog 3 methods (handelingen):
<commandoline> - verwijder
<commandoline> - sla_op
<commandoline> - laad
<commandoline> dus laten we die ook maar gebruiken, ten eerste verwijder
<commandoline> zo, ik ben geschrapt uit mijn eigen adresboek.
<commandoline> tijd om het adresboek op te slaan
<commandoline> goed, om de laatste method te gebruiken, namelijk laad(), gaan we een tweede adresboek aanmaken.
<StefandeVries> hannie: dat zit er prima uit :)
<commandoline> (19:39:20) hannie: elif keuze == 3:
<commandoline> (19:39:20) hannie: 		naamweg = raw_input("Welke naam moet weg?")
<commandoline> (19:39:20) hannie: 		mijnAB.verwijder(naamweg)
<commandoline> (19:39:26) hannie: Ik had dit
<commandoline> (19:39:46) hannie: mijnAB zelfde als Adresboek1
<commandoline> klopt, de naam adresboek1 is gewoon gekozen, net zoals je hierbij een naam kan kiezen:
<commandoline> getal = input("Geef een getal")
<commandoline> getal had net zo goed nummer kunnen zijn
<commandoline> hier is dat ook zo
<commandoline> ok, we gingen dus een tweede adresboek aanmaken
<commandoline> wat ik daarna heb gedaan, is het laden van het adresboek dat net was opgeslagen in het nieuwe adresboek
<commandoline> op dit moment is adresboek1 dus gelijk aan adresboek2
<commandoline> oh, ik had een foutje gemaakt
<commandoline> ik wilde hetzelfde bestand laden
<commandoline> (bedankt, StefandeVries!)
<commandoline> en dat gebeurt nu ook
<leoquant> hannie> Ik zie alleen adresboek1=adresboek(). Heb ik adresboek2 gemist?
<commandoline> ik heb hier toch wat meer staan, momentje...
<StefandeVries> hannie: foutje van commandoline; we gebruiken voor adresboek2 het opgeslagen adresboek van adresboek1
<commandoline> http://typewith.me/ep/pad/view/ro.KilZOISYC3j/latest
<commandoline> klopt bij mij gewoon
<commandoline> ik ga wel verder, want ik hoor verder geen mensen die het bestand niet kunnen volgen.
<commandoline> goed, ik wil aan het tweede adresboek een nieuw mailadres toevoegen.
<commandoline> en dat heb ik gedaan.
<commandoline> laten we om er een werkend programma van te maken ook nog even laten zien welke adressen nu precies in het adresboek zitten.
<commandoline> goed, we hebben nu een werkend programma, dat een adresboek aanmaakt en daar verschillende handelingen op uitvoert
<commandoline> het voordeel is dat we niet meer zelf hoeven na te denken over hoe we een bestand laden en opslaan, of over hoe je een naam verwijdert uit een dictionary
<commandoline> begrijpt iedereen nu wat dit programma doet?
<commandoline> (19:48:39) MedUsaXIII56: Ik snap het wel, maar hoe gebruik je dit programma nu precies ?
<commandoline> dit programma geeft altijd hetzelfde resultaat.
<commandoline> het laat puur zien hoe de class Adresboek functioneert.
<commandoline> (19:49:56) MedUsaXIII56: Ok, je moet dus zelf de raw inputs er in doen ? 2e vraag, we hebben geen functie aan gemaakt die alle adrssen laad zien of wel ?
<StefandeVries> Klopt allebei
<commandoline> maar, dat laatste is op zich niet nodig
<commandoline> want we hebben de property 'adressen'
<commandoline> en de vragen van MedUsaXIII56 sluiten prachtig aan op de link die ik jullie wilde geven:
<commandoline> http://paste.ubuntu.com/588654/
<commandoline> hier wordt precies dezelfde class gebruikt
<commandoline> maar er is een programma omheen geschreven.
<commandoline> Ik ga dat programma nu niet uitgebreid uitleggen, maar ik raad jullie aan om het door te lezen en te draaien, en de volgende keer vragen te stellen als jullie (een deel ervan) niet begrijpen.
<commandoline> ik wil nu namelijk samen met jullie een programma schrijven, zodat je doorkrijgt hoe dat nou eigenlijk werkt, zo'n class schrijven.
<commandoline> hoewel, eigenlijk schrijven we samen de class die het gebruikt, jullie mogen het daaromheenliggende programma gebruiken.
<commandoline> het programma dat we gaan maken heet 'galgje.py'
<commandoline> en kan worden gebruikt om een spel te spelen wat jullie allemaal wel kennen :)
<commandoline> http://typewith.me/ep/pad/view/ro.KSz8svqakm4/latest
<commandoline> goed, we willen vandaag de logica achter het spel galgje gaan programmeren.
<commandoline> de interface die die logica gebruikt, gaan jullie later maken.
<commandoline> om dat wat toe te lichten
<commandoline> de class Adresboek bevatte de logica van het adresboekprogramma
<commandoline> de rest was de gebruikersinterface
<commandoline> centraal in galgje is het woord dat geraden moet worden.
<commandoline> dus we gaan een class maken die 'Woord' heet.
<commandoline> duidelijk tot zover?
<commandoline> OK, blijkbaar is het duidelijk.
<commandoline> dan wordt het nu eerst tijd om de eigenschappen (properties) en handelingen (methods) te bedenken.
<commandoline> in dit geval hebben we een aantal properties:
<StefandeVries> hannie: dat is aan te raden, zeker bij grote projecten
<commandoline> - aantal_fouten; op basis hiervan kunnen jullie in je interface de galg tekenen.
<commandoline> (20:00:19) hannie: Je zou dus eigenlijk eerst een ontwerp op papier moeten zetten?
<StefandeVries> (08:00:34 PM) StefandeVries: hannie: dat is aan te raden, zeker bij grote projecten
<commandoline> en ook bij kleine projecten kan het zeker in het begin, handig zijn :)
<commandoline> daarnaast is het voor de interface handig om te weten uit hoeveel letters het woord bestaat
<commandoline> dan kan die het juiste aantal 'streepjes' neerzetten.
<commandoline> dus een property 'lengte'
<commandoline> goed, dan de handelingen:
<commandoline> 'gok_letter'
<commandoline> misschien is raad_letter trouwens mooier.
<commandoline> en daarnaast:
<commandoline> raad_woord
<commandoline> goed, daarnaast moet het nog mogelijk zijn om een woord te geven aan de Woord-class
<commandoline> het woord dat geraden moet wordne
<commandoline> *worden
<commandoline> ik geef dat door via de handeling __init__, die automatisch wordt aangeroepen door python bij het maken van een instantie/object
<commandoline> zoals jullie later zullen zien.
<commandoline> (20:05:18) hannie: Moet je categorie?n maken, b.v. 5-letter woorden enz.?
<StefandeVries> nee, hannie, Python kan automatisch berekenen uit hoeveel letters het woord dat je gebruikt bestaat
<commandoline> en
<StefandeVries> en daar de interface op aanpassen
<commandoline> goed, ik heb alle handelingen/methods toegevoegd
<commandoline> nou nog de properties, ik doe dat meestal in __init__ want dan zijn ze direct vanaf het aanmaken van het object beschikbaar
<commandoline> ok, en daarmee is de eerste handeling/method gelijk klaar :)
<commandoline> laten we eerst eens de raad_woord handeling/method invullen
<commandoline> de gebruiker geeft daarbij een woord
<commandoline> de handeling/method kijkt of dat woord klopt
<commandoline> en als dat zo is, wordt 'True' teruggegeven.
<commandoline> als dat niet zo is, wordt het aantal fouten met 2 verhoogt
<commandoline> en wordt False teruggegeven.
<commandoline> en dat is alweer omgezet in code :)
<commandoline> goed, dan blijft er nog Ã©Ã©n handeling/method over
<commandoline> en die is het ingewikkeldst
<commandoline> de aanroeper ervan geeft een letter waarvan hij/zij denkt dat die in het woord zit.
<commandoline> als dat zo is, dan moeten *alle* posities waarop dat zo is doorgegeven worden.
<StefandeVries> hannie: waarom komen er tegelijk 2 fouten bij en niet 1?
<commandoline> en voor het gemak, geef ik dan ook meteen de bijbehorende letter mee terug
<StefandeVries> Raad je een letter fout dan heb je Ã©Ã©n fout. Raad je het woord fout, heb je twee fout
<commandoline> en anders wordt er Ã©Ã©n fout toegevoegd.
<commandoline> ok, en daarmee is de class af.
<commandoline> begrijp iedereen wat ik gedaan heb, en ook hoe deze class te gebruiken is?
 * commandoline verwacht vragen :)
<StefandeVries> hannie: een beetje, heeft nog bestudering nodig
<StefandeVries> We zijn er bijna altijd ;)
<commandoline> goed, ik zal jullie dan een beetje op weg helpen met de interface
<commandoline> zodat jullie daar als jullie die deze week proberen te maken niet op vastlopen.
<commandoline> zoals jullie zien heb ik een stukje code toegevoegd
<commandoline> dat wil ik nog even regel voor regel behandelen.
<commandoline> wat het doet is de class gebruiken.
<commandoline> zo, even gok weer in raad verandert :)
<commandoline> ok, zo werkt het programma weer...
<commandoline> (even getest)
<commandoline> regel 35
<leoquant> hannie> wat houdt main in?
<commandoline> ben ik net mee bezig :)
<commandoline> die regel betekend zoiets als:
<commandoline> 'Als dit bestand uitgevoerd wordt (niet bijv. geimporteerd via import), dan...'
<commandoline> __name__ wordt door python op '__main__' gezet als dat het geval is
<commandoline> ok, volgende regel, 36:
<commandoline> hierin wordt een nieuw woord aangemaakt
<commandoline> het woord 'test' moet geraden worden
<commandoline> vervolgens raden we een letter, de 't'. Die zit er twee keer in. We krijgen dan ook terug:
<commandoline> [[0, 't'], [3, 't']]
<commandoline> m.a.w., de letter t komt voor op positie 0 en positie 3
<commandoline> dit is handig als jullie jullie interface gaan maken (hint)
<commandoline> oja, ik had nog een regel overgeslagen
<commandoline> regel 38, waarop de lengte van het woord wordt opgevraagd
<commandoline> dat geeft 4 terug
<commandoline> (die property hadden we eerder aangemaakt)
<commandoline> goed, daarna raden we nog een letter:
<commandoline> de 's'
<commandoline> die zit er ook in, we krijgen dus:
<commandoline> [[2, 's']] terug
<commandoline> pas hier verandert wat:
<commandoline>     print woord.raad_letter("x")
<commandoline> we vragen de x, en die zit er niet in. we krijgen dus een lege list [] terug
<commandoline> en als we nu het aantal fouten opvragen:
<commandoline>     print woord.aantal_fouten
<commandoline> is dat 1
<commandoline> daarna raden we het woord 'tesst' (dom, teveel letters :()
<commandoline> dat levert achter de schermen twee punten aftrek op, trouwens
<commandoline> en we krijgen daarom False terug
<commandoline> daarna raden we 'test'
<commandoline> en dat klopt :)
<commandoline> daarna willen we nog even het aantal fouten weten
<commandoline> print woord.aantal_fouten.
<commandoline> dat is 3
<commandoline> jullie kunnen precies diezelfde methods en properties gebruiken om het spel te laten spelen door de gebruiker
<commandoline> (20:28:28) hannie: en dan moet Barbertje nog getekend worden
<commandoline> als dat te ingewikkeld is, kan je gewoon de score laten zien in de interface
<commandoline> maar leuker is om met ascii-art e.d. te gaan werken
<commandoline> (zie wikipedia)
<commandoline> oja, nog een hint:
<commandoline> maak eerst een list aan met allemaal '_' erin
<commandoline> met de lengte van het woord
<commandoline> en vervang zodra je een letter terugkrijgt die klopt, het streepje op die index door de mee teruggegeven letter.
<commandoline> ok, ik ben benieuwd wat jullie maken van de twee opdrachten:
<commandoline> - probeer het adresboekprogramma zoals halverwege gegeven te begrijpen, en stel vragen als dat niet zo is:
<commandoline> http://paste.ubuntu.com/588654/
<commandoline> - maak een mooie interface voor galgje, als je ergens op vastloopt, vraag dan in #ubuntu-nl-mwanzo, dan helpen we je een stukje op weg :)
<commandoline> goed, dat was het voor vandaag
<commandoline> bedankt voor jullie komst allemaal :)
<commandoline> en tot volgende week!
<StefandeVries> dank je, leoquant :)
<leoquant> mooi les
<leoquant> e
<StefandeVries> dank je
