OK.
Wenn man aber die myfun - Definition in ein .mx Package speichert dann
nützt auch On[SetDelayed] nichts, weil ja schon die DownValues im .mx sind.
Rolf
Jens-Peer Kuska wrote:
Hallo,
guckt doch mal, was passiert mit
-------------------------------------------------------------------
BeginPackage["TopSecret`"]
myfun::usage="myfun[x] will do something very very
sectret."
Begin["`Private`"]
myfun[x_]:=Sin[x]
End[]
EndPackage[]
Attributes[myfun]={ReadProtected,Protected,Locked}
--------------------------------------------------------------------
Mit Encode[] gibt das die Datei im Anhang.
So, jetzt ist myfun[] sicher vor den Augen der
Welt -- ist ja mit Locked geschützt.
Dann startet man einen neuen Kernel, sagt
On[SetDelayed]
Get["TopSecret`"]
und was lächelt uns an ?
SetDelayed::trace: myfun[x_]:=Sin[x] --> Null
wer hätte das gedacht. Nicht mal der volle Context
macht den
Code unleserlich. Ansonsten *muß* das immer
gehen, weil
man die Funktion erst mit Locked versehen kann,
wenn sie definiert
ist.
Natürlich kann man vor BeginPackage[] alle
Debugging-Funktionen
ausschalten :-), um das zu verhindern.
Gruß
Jens
----- Original Message -----
From: "Rolf Mertig" <rolf@XXXXXXX.com>
To: "Jens-Peer Kuska"
<kuska@XXXXXXX.de>
Cc: <llsaiyajin@XXXXXXX.de>; <demug@XXXXXXX.ch>
Sent: Thursday, September 15, 2005 11:30 PM
Subject: Re: Eigenen Code weitergeben
| Jens-Peer Kuska wrote:
|
| >Hallo,
| >
| >ich schätze solches Verhalten eigentlich nicht.
| >Zum einen ist es meist sinnlos. Weil sich kaum
| >jemand
| >einen größeren Quelltext anguckt und weil sich
| >eine störende
| >Kleinigkeit nicht selbst beheben läßt.
| >
| >Neben dem Encode[] muß man nämlich noch
| >alle Symbole mit einem Protected Attribut
| >schützen und alle Funktionen mit ReadProtected.
| >
| >Natürlich kann man den Quelltext immer
| >rekonstruieren, in dem
| >man das Encode[] Package läd, sich die Names[]
des
| >Kontextes ausgeben
| >läßt, dann obige Attribute von den Symbolen des
| >Packages
| >entfernt und sich die Definition[], die
Options[]
| >.. ausgeben läßt.
| >
| >
| Nee nee, beim Attribute "Locked" geht das nicht
..
|
|