Pakete in Squeak

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Pakete in Squeak

Klaus Füller-5
Ich komme mit der Organisation von Softwareprojekten in Squeak  
schlecht zurecht. Vielleicht kann mir jemand helfen, vielleicht fehlt  
mir auch einfach ein Hinweis auf die richtige Doku.

Meine Organisation:

Ich habe ein Morf-Projekt namens SQL. Alle meine Klassen landen in  
einer der Kategorien KlausF-Mysql oder KlausF-MysqlTest.
---> Ist das OK?

Ich kann alle Klassen unter KlausF-Mysql* mit Monticello auf einen  
Server laden. Das verstehe ich. OK. Kein Problem. Ich kann diese  
Kategorien auch in *.st-Dateien lokal speichern.

Ich kann das Projekt SQL in eine *.pr-Datei speichern. Tue ich das,  
erscheinen 2 Fragen, die ich nicht verstehe: "Would you like to  
include all the changes ..." und "Some blocks which reference instance-
variables are included in this segment ..."
---> Was bedeutet das genau?
---> Wo bekomme ich erklärt, was genau ein Change-Set ist und wie ich  
steuern kann, was in einem Change-Set erscheinen soll?

Wenn ich diese *.pr-Datei in ein frisches Image lade, kommt eine  
Fehlermeldung "Reading an Instance of ... Which modern class should it  
translate to?"
---> Was bedeutet das? Wie gehe ich damit um? wie verhindere ich das?

Wenn ich meine *.st-Dateien in ein frisches Image lade, klappt das  
wunderbar. Aber, wenn ich die Tests durchführe, fehlen die Methoden  
Integer>>asByteArray und ByteArray>>bitXor. Diese Methoden habe ich  
nicht geschrieben, sie stammen offensichtlich aus einem anderen  
Monticello-Paket, das ich in der Zwischenzeit geladen habe.
---> Was tue ich nun?
Ich weiß, dass ich diese Methoden in mein Monticello-Paket übernehmen  
kann, indem ich sie in die Message-Kategorie '*klausf-mysql' schreibe.  
Aber:
---> Landen diese Methoden dann auch beim lokalen Speichern in der  
*.st-Datei?
---> Was geschieht, wenn es Integer>>asByteArray bereits gibt, wenn  
mein Monticello-Paket geladen wird?
        Überschreibt dann meine Methode die bereits installierte?

Grüße an die Liste
Klaus
Reply | Threaded
Open this post in threaded view
|

Re: Pakete in Squeak

Matthias Berth-2
Hallo Klaus,


was ist Dein Ziel?

Möchtest Du Smalltalk-Klassen und Methoden verwalten? Dann ist ein
Monticello-Package das richtige. Speicherst Du ein
.mcz file ab? Dokumentation zu Monticello ist in "Squeak by Example".

Oder möchtest Du auch selbstgemachte Morphs (zB ein BookMorph mit
einer Präsentation, eine Zeichnung o.ä.) abspeichern? Dann ist das
Speichern eines Projekts (.pr) OK.

Die "Rückfragen" beim Speichern als .pr kommen daher, daß nicht nur
Klassen sondern auch vollständige Objekte gespeichert werden.

2009/1/13 Klaus Füller <[hidden email]>:
> Ich komme mit der Organisation von Softwareprojekten in Squeak schlecht
> zurecht.
> [...]
> Ich habe ein Morf-Projekt namens SQL. Alle meine Klassen landen in einer der
> Kategorien KlausF-Mysql oder KlausF-MysqlTest.
> ---> Ist das OK?

Ja.

> Ich kann alle Klassen unter KlausF-Mysql* mit Monticello auf einen Server
> laden. Das verstehe ich. OK. Kein Problem. Ich kann diese Kategorien auch in
> *.st-Dateien lokal speichern.

Du kannst / solltest Sie auch lokal als Monticello-Pakete speichern.
Dazu kannst Du ein lokales Monticello repository anlegen und dann
immer dorthin speichern.

> Ich kann das Projekt SQL in eine *.pr-Datei speichern. Tue ich das,
> erscheinen 2 Fragen, die ich nicht verstehe: "Would you like to include all
> the changes ..." und "Some blocks which reference instance-variables are
> included in this segment ..."
> ---> Was bedeutet das genau?

Wie gesagt, es werden Objekte (und nicht nur Klassen und Methoden)
abgespeichert.

> ---> Wo bekomme ich erklärt, was genau ein Change-Set ist und wie ich
> steuern kann, was in einem Change-Set erscheinen soll?

Ein Change set enthält eine Mitschrift von Änderungen im System.
Änderungen in Klassen und Methiden stehen drin, Änderungen an Objekten
werden nur unvollständig abgebildet (alle "Do-it's" sind drin). Dann
kann man mit einem change browser Änderungen von einem changeset ins
andere verschieben use..

> Wenn ich diese *.pr-Datei in ein frisches Image lade, kommt eine
> Fehlermeldung "Reading an Instance of ... Which modern class should it
> translate to?"
> ---> Was bedeutet das? Wie gehe ich damit um? wie verhindere ich das?


Die Klasse des gelesenen Objektes ist nicht im System,. Wahrscheinlich
muß noch ein anderes package geladen werden.

> Wenn ich meine *.st-Dateien in ein frisches Image lade, klappt das
> wunderbar. Aber, wenn ich die Tests durchführe, fehlen die Methoden
> Integer>>asByteArray und ByteArray>>bitXor. Diese Methoden habe ich nicht
> geschrieben, sie stammen offensichtlich aus einem anderen Monticello-Paket,
> das ich in der Zwischenzeit geladen habe.
> ---> Was tue ich nun?

nachsehen, in welchem Monticello-Paket diese Methoden sind: im alten
image im browser steht zu der Methode "In change set xyz" - bzw. das
Package der zugehörigen Klasse ist sowieso ein Monticello-paket.

> Ich weiß, dass ich diese Methoden in mein Monticello-Paket übernehmen kann,
> indem ich sie in die Message-Kategorie '*klausf-mysql' schreibe. Aber:
> ---> Landen diese Methoden dann auch beim lokalen Speichern in der
> *.st-Datei?

Tun sie nicht, aber ich bin nicht 100% sicher.

> ---> Was geschieht, wenn es Integer>>asByteArray bereits gibt, wenn mein
> Monticello-Paket geladen wird?
>        Überschreibt dann meine Methode die bereits installierte?

Ich glaube, ja. Es wird davon abgeraten, solche Methoden zu überschreiben.

Viele Grüße

Matthias
Reply | Threaded
Open this post in threaded view
|

Re: Pakete in Squeak

Klaus Füller-5

Am 13.01.2009 um 16:49 schrieb Matthias Berth:

> Hallo Klaus,
Danke für die Schnelle Antwort.
>
> was ist Dein Ziel?
>
> Möchtest Du Smalltalk-Klassen und Methoden verwalten? Dann ist ein
> Monticello-Package das richtige. Speicherst Du ein
> .mcz file ab? Dokumentation zu Monticello ist in "Squeak by Example".

Ja. Ich würde eine "Applikation" dann so gestalten, dass man der  
Klasse für den Haupt-View die Message 'start' schickt. Beispiel:  
MysqlClient start. ((Ich lösche jetzt die Fragen zu *.pr.
[...]

>> Ich habe ein Morf-Projekt namens SQL. Alle meine Klassen landen in  
>> einer der
>> Kategorien KlausF-Mysql oder KlausF-MysqlTest.
>> ---> Ist das OK?
>
> Ja.

Tatsächlich heißt das Monticello-Projekt jetzt KFMysql und ist unter http://www.squeaksource.com/KFMysql 
  veröffentlicht. Nimmt "man" dieses Repository oder gibt es  
Alternativen?

>> Ich kann alle Klassen unter KFMysql* mit Monticello auf einen Server
>> laden. Das verstehe ich. OK. Kein Problem. [...]
>
> Du kannst / solltest Sie auch lokal als Monticello-Pakete speichern.
> Dazu kannst Du ein lokales Monticello repository anlegen und dann
> immer dorthin speichern.

Die landen automatisch in .../.../package-cache. Soll ich noch  
zusätzlich ein Repository einrichten?
[...]

>> Wenn ich meine *.st-Dateien in ein frisches Image lade, klappt das
>> wunderbar. Aber, wenn ich die Tests durchführe, fehlen die Methoden
>> Integer>>asByteArray und ByteArray>>bitXor. Diese Methoden habe ich  
>> nicht
>> geschrieben, sie stammen offensichtlich aus einem anderen  
>> Monticello-Paket,
>> das ich in der Zwischenzeit geladen habe.
>> ---> Was tue ich nun?
>
> nachsehen, in welchem Monticello-Paket diese Methoden sind: im alten
> image im browser steht zu der Methode "In change set xyz" - bzw. das
> Package der zugehörigen Klasse ist sowieso ein Monticello-paket.

Die Methoden stammen aus "Cryptography". Ich trage das jetzt einfach  
im Monticello als "Required" ein.

VIELEN DANK für die Tipps.

Klaus
Reply | Threaded
Open this post in threaded view
|

Re: Pakete in Squeak

Matthias Berth-2
2009/1/13 Klaus Füller <[hidden email]>:
>
> Am 13.01.2009 um 16:49 schrieb Matthias Berth:
>
>> Hallo Klaus,
>
> Danke für die Schnelle Antwort.

gern :)

> [...]
> Tatsächlich heißt das Monticello-Projekt jetzt KFMysql und ist unter
> http://www.squeaksource.com/KFMysql veröffentlicht. Nimmt "man" dieses
> Repository oder gibt es Alternativen?

"man" nimmt es.

>>> Ich kann alle Klassen unter KFMysql* mit Monticello auf einen Server
>>> laden. Das verstehe ich. OK. Kein Problem. [...]
>>
>> Du kannst / solltest Sie auch lokal als Monticello-Pakete speichern.
>> Dazu kannst Du ein lokales Monticello repository anlegen und dann
>> immer dorthin speichern.
>
> Die landen automatisch in .../.../package-cache. Soll ich noch zusätzlich
> ein Repository einrichten?
> [...]

Ich richte immer ein extra repository (lokales directory) ein, dann
kann ich meinen code leicht von allen anderen packages trennen (zB für
backup).

Viele Grüße

Matthias