Changes between Version 13 and Version 14 of squeak_faq


Ignore:
Timestamp:
10/14/2013 04:10:16 PM (11 years ago)
Author:
willi.mueller
Comment:

improved SARInstaller answer

Legend:

Unmodified
Added
Removed
Modified
  • squeak_faq

    v13 v14  
    461461=== Wie erstelle ich das SAR-Archiv für die Abgabe? ===
    462462
    463 Bei SARs handelt es sich nur um ZIPs mit etwas Smalltalk Quellcode (preamble, postscript Dateien). Ihr könnt sie einfach von Hand erstellen. Daher wäre es schön, wenn ihr einfach alles in ein ZIP packt, die 1-2 Zeilen Code zum Laden des MCZ Packages schreibt und dann gebündelt in einem SAR abgebt. Denkt daran, dass ihr auch Ressourcen wie Bilder und Audiodateien mit reinpackt und beim Installieren des SARs extrahiert.
    464 
    465 Hier findet ihr grundlegende Informationen und Tools, die euch bei der Erstellung helfen:
    466 
    467 [http://www.visoracle.com/squeak/faq/sar-installer.html SAR-Installer HowTo]
    468 
    469 [http://wiki.squeak.org/squeak/3324 SAR-Installer Dokumentation]
     463Der Quelltext soll in Form eines SAR-Archives abgegeben werden, da so
     464auch externe Ressourcen mit verpackt werden können.
     465
     466Da es sich bei einem SAR-File eigentlich nur um ein ZIP-File handelt
     467(mit einer speziellen Preamble, die beim Installations-Vorgang
     468ausgeführt wird), könnt ihr es direkt im Image erstellen. Als Beispiel
     469hier ein Snippet, das wir für unser Koans-Projekt benutzt haben:
     470
     471{{{
     472|package|
     473
     474package := 'Koans'.
     475
     476zip := ZipArchive new.
     477mczStream := RWBinaryOrTextStream on: (String new: 10000).
     478workingCopy := MCWorkingCopy forPackage: (MCPackage new name: package).
     479version := workingCopy newVersion.
     480version fileOutOn: mczStream.
     481(zip addString: mczStream contents as: package , '.mcz') desiredCompressionLevel: 0.
     482zip addString: 'self fileInMonticelloZipVersionNamed:
     483    ''' , package , '.mcz''.' as: 'install/preamble'.
     484zip writeToFileNamed: package , '.sar'.
     485}}}
     486
     487Es schreibt einfach die aktuelle Working-Copy des Monticello-Packages
     488"Koans" in das SAR-File. Dabei wird eine neue Monticello-Version eures
     489Packages erstellt. Falls ihr noch externe Resourcen für euer Spiel
     490benötigt, könnt ihr diese folgendermaßen zum Archiv hinzufügen.
     491
     492{{{
     493|package folder|
     494
     495package := 'Koans'.
     496folder := 'KoanResources'.
     497
     498zip := ZipArchive new.
     499mczStream := RWBinaryOrTextStream on: (String new: 10000).
     500workingCopy := MCWorkingCopy forPackage: (MCPackage new name: package).
     501version := workingCopy newVersion fileOutOn: mczStream.
     502(zip addString: mczStream contents as: package, '.mcz') desiredCompressionLevel: 0.
     503zip addTree: Smalltalk imagePath match: [:e | e fullName startsWith:
     504    Smalltalk imagePath , FileDirectory slash , folder].
     505zip addString:  'self fileInMonticelloZipVersionNamed: ''' , package, '.mcz''.
     506(self membersMatching: ''' , folder , FileDirectory slash , '*.*'') do: [ :f | self
     507    extractMember: f].' as: 'install/preamble'.
     508zip writeToFileNamed: package , '.sar'.
     509}}}
     510
     511Hierbei werden alle Dateien im Unterverzeichnis "KoanResources" (im
     512Contents/Resources Verzeichnis des Images) hinzugefügt und beim
     513Installieren wieder extrahiert. Einzelne Dateien könnt ihr mittels "zip
     514addFile: pathToFile as: fileName" hinzufügen.
     515
     516Weitere Informationen und Anleitungen siehe [http://wiki.squeak.org/squeak/3324 SARInstaller Dokumentation].
    470517
    471518
    472519=== Welchen Umfang sollten die Projekte haben? ===
    473520
    474 Die Anforderungen, welche durch die Spiele umgesetzt werden sollen, reflektieren auch den Umfang des Projektes. Alle Projekte wurden so gewählt (oder von uns freigegeben), sodass sie einerseits mit 4 Studenten in der vorhandenen Zeit sehr gut realisierbar sind und andererseits auch ausreichend Raum lassen, um eine sehr gute Architektur zu entwickeln.
     521Die Anforderungen, welche durch die Spiele umgesetzt werden sollen, reflektieren auch den Umfang des Projektes. Alle Projekte wurden so gewählt (oder von uns freigegeben), sodass sie einerseits mit 4 Studierende in der vorhandenen Zeit sehr gut realisierbar sind und andererseits auch ausreichend Raum lassen, um eine sehr gute Architektur zu entwickeln.
    475522
    476523Eine Zahl entsprechend der Menge an Quelltext lässt sich nur schwer bestimmen, da es von zu vielen Faktoren abhängt (Verwendung von Mustern, Kenntnis der Smalltalk Bibliothek, Benutzte Abstraktionen etc.). Falls es euch hilft: Wir hatten schon sehr gute Projekte, welche nur knapp 1.000 Zeilen geschrieben haben aber auch sehr gute mit mehr als 4.000 Zeilen. Versucht euch am Besten dazwischen einzupendeln und setzt euren Fokus lieber auf Qualität statt Quantität. Uns geht es in dieser Lehrveranstaltung vor allem darum, dass ihr lernt und versteht, was es heißt "schönen" Code zuschreiben.
    477524
    478525
     526
    479527== Patterns ==
    480 
    481528
    482529=== State und Strategy Pattern – Was ist der Unterschied? ===