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
..
|
|
begin 666 TopSecret.m
M*"HA,4XA*BEM8VT-"DTD4G%5:7%Y;&(X3U)3<FDU621W)"=3.3TR4V1K=V]#
M,$5T?3Q>8E)<*"9636I-.EYI25=0*4YF(#A73%A'7F)8)%YB-V,-"D)287$T
M)%TU)V4^?"U?(CIC0BUB(21 6CXN)S1C=CH\56EH<UE.+$Q*6T-[5DLG>UE>
M47=T4C%:-"-/+5HN9#HB;S=%,G,-"B,C4T@G4$$O=B!B(&A@5&,U8B!3,W)&
512!6(B]O2T]C2'US;G!R)E$@+ T*
`
end