Neues Thema mit dem Telit Python Kram...

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
spongebob.squarepants
User
Beiträge: 54
Registriert: Freitag 22. Mai 2009, 12:59

Hallo Board,
nachdem ich letztens so freundlich behandelt wurde, komme ich heute mal wieder mit einem Problem um die Ecke.

Da heisst es in der FAQ zum Telit Python:
There is a limit of 682 elements (variables, functions, strings, constants...)
that can be used in a script. These elements are stored inside a dictionary during the parsing phase; if the number of elements used overcome the 682 units, the script returns a memory error message. To avoid this problem we suggest to call with the same name, different variables, strings, etc. where it is possible
An anderer Stelle heisst es:
We advise you to use the same variable names in different .py files of the same project, in case this is possible.
mit der Begleitinfo, dass alle Namen im Kontext des Main-Scriptes angelegt werden, d.h. die Beschränkung gilt nicht per Script, sondern per Projekt...

Nun habe ich das leider erst heute gelesen, also schon einiges zusammengehackt. Natürlich habe ich meinen Variablen/Funktionen etc. so weit wie möglich selbsterklärende Namen gegeben...

Da ich immer noch kein Modul habe, kann ich nicht mal testen, ob das auf die Nase fällt mit meinen Scripts :(

Also bleibt nur der "proaktive Ansatz": Im vorausschauenden Gehorsam alle Kreativität fahren lassen, und Funktionen mit f1...fx, Integers mit i1....ix, Strings mit s1....sx, Dictionaries mit d1....dx und und und umzubenennen, damit man möglichst nicht an die Grenze stösst.

Und wieder die Frage: Gibts für sowas nicht was von Ratiopharm? Also ein Script, was über ein anderes Script geht und alles, was es findet, nivelliert im o.a. Sinne... Obfuscation reicht wohl nicht, weil die Kreativität bei der Namensgebung ja nicht eingeschränkt wird.

Alternativ kann man das natürlich auch mit Suchen und Ersetzen erledigen, aber das ist wohl doch fehleranfälliger...

Grüsse
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

was sitzt denn da für ein prozessor auf dem modul?
du musst aufpassen, dass du den nicht überschätzt, manchmal sind die uc auf solchen modulen recht klein und die programmierbarkeit nur zur aufbereitung und bereitstellung der daten in komfortablem format. du scheinst ja eine ganze applikation da draufpacken zu wollen. und dann auch noch mit python...
http://www.kinderpornos.info
spongebob.squarepants
User
Beiträge: 54
Registriert: Freitag 22. Mai 2009, 12:59

Na, das ist doch dieses Telit Modul, da hattest Du doch letztens schon Deine Bedenken geäussert :) Wie gesagt, ich habe die Auswahl nicht in der Hand, das entscheidet der AG.
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

ich habe keine bedenken bei dem modul, ich habe nur den eindruck, dass du es vergewaltigst.
du musst doch wissen, was für ein uc auf dem modul verbaut ist...
hast du erfahrung im bereich der uc-entwicklung?

edit: ich meine natürlich befürchtung :)
es ist einfach ätzend wenn man so schön vor sich hin coded und dann merkt, dass die gewählte hardware timing und speicherandorderungen nicht erfüllen kann.
wenn du hilfe in dem bereich brauchst kann ich dir das mikrocontroller.net forum sehr ans herz legen.
http://www.kinderpornos.info
spongebob.squarepants
User
Beiträge: 54
Registriert: Freitag 22. Mai 2009, 12:59

Ja, ich denke, ich habe einige Erfahrungen mit hardware naher Programmierung. Nicht mit Py auf einem Modul, allerdings.
Aber darauf kommt es hier nicht an.
Hier geht es jedoch lediglich um die Frage: Gibt es ein kleines Python Script bereits, mit dem man über seine Scripte rasseln kann und das alle schönklingenden Variablennamen auf Namen zwischen v1 und vn zurückführt (dito mit Funktionsparametern und Funktionsnamen (f1 bis fn)). Ich meine, ich kann das händisch, es wäre aber schön, wenn man weiter sehr gelassen mit den Bezeichnern auf der Entwicklungsebene umgehen könnte und erst später im Postprozess das Script modulfähig macht.

Hier ist es ja lediglich eine Speicherproblematik des Pythoninterpreters und es wird nahegelegt, möglichst gleiche Namen für Variablen und Funktionen in den einzelnen Scripten zu verwenden, weil sonst ein Dict im Interpreter dicke Backen macht.

Also etwa folgendermassen:

Code: Alles auswählen

def meineSchoenklingendeFunktion(strasse, hausnummer):
  print strasse, hausnummer

strasse = 'Hauptstrasse'
hausnummer = 6
meineSchoenklingendeFunktion(strasse, hausnummer)

sieht danach so aus:

def f1(v1,v2):
  print v1, v2

v1 = 'Hauptstrasse'
v2 = 6
f1(v1,v2)
Das Ganze muss natürlich imports (nur lokale Dateien) verstehen und Crossreferenzen auflösen.
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

es gibt ja eigentlich nichts was es nicht gibt, aber ich wüsste nicht warum jemals jemand soetwas getan haben sollte. ich kann dir nur nochmals ans herz legen mal bei telit anzurufen, die werden dir gerne weiterhelfen.

aber wenn ich soetwas machen wollte würde ich das evtl mit rope machen. (python refactorer geschrieben in python) damit sollte das recht einfach und einigermaßen solide gehen. trotzdem würde ich glaub ich ziemlich staunen, wenn mir jemand eine solche lösung im professionellen umfeld präsentieren würde... naja, viel spass damit.
http://www.kinderpornos.info
spongebob.squarepants
User
Beiträge: 54
Registriert: Freitag 22. Mai 2009, 12:59

Danke für den Tipp.

Was den Rest Deiner Einlassungen angeht, hättest Du mit etwas Selbstreflektion durchaus erkennen können, mit welcher dämlichen Arroganz Du hier rüber kommst.

Ich meine, Spongebob ist ja eigentlich ein Lieber, und den aufzuregen, braucht's schon was. Was glaubst Du eigentlich, wer Du bist, hier andere (mich) ständig abzuqualifizieren??

Noch mal zum Mitschreiben:
1) Ich habe einen Auftraggeber, durchaus professioneller Art
2) Der Auftraggeber beharrt auf dem Chip/Modul
3) Das Python auf dem Modul ist funktional limitiert und wird von mir weder vergewaltigt noch anderweitig missbraucht, sondern nur den Mitteln entsprechend verwendet.
4) Ich versuche lediglich, Vorgaben des AG umzusetzen, nicht hier den "Ich bin der Grösste" Contest zu gewinnen, auf dem Du offenbar ständig rumagierst.

Ob Dir das nun professionell oder amateurhaft erscheint, kannst Du gerne für Dich behalten, ist mir auch Jacke. Falls es nur um die weitere Vergrößerung Deines Egos geht, solltest Du vielleicht einfach mal den Rand halten, wenn Du nichts zu sagen hast. Ansonsten verrate mir, womit ich diese Flames provoziert habe.

Ende der Durchsage
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Um die Wogen etwas zu glätten, wieder zurück zum Thema:
Hast Du pyobfuscate einmal testweise laufen lassen. Evtl. genügt das Ergebnis ja den Anforderungen. Ansonsten könnte man vielleicht einfach die Namensgenerierung z.B. in gen_name() etwas anpassen. Du kannst Dir den Sourcecode ja mal anschauen.
MfG
HWK
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

das ist keine arroganz, ich weiss einfach bescheid. :twisted:

mal im erst, du siehst doch, dass du an die grenzen von dem teil stösst.
ich würde von dir als auftraggeber erwarten, dass du das kommunizierst, statt murks abzuliefern.
http://www.kinderpornos.info
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Nochmals zu pyobfuscate:
Man könnte die Namen aus einer festen Liste, also nicht mehr zufällig wie im Original, auswählen lassen. 682 Namen sollten wohl für ein Skript reichen, ansonsten muss man halt das Skript verkleinern. Dann lässt man das angepasste pyobfuscate über jedes Skript laufen. Aufpassen muss man dann eigentlich nur noch bei der Kommunikation der verschiedenen Module, dass das aufrufende Modul die richtigen Namen aus dem aufgerufenen verwendet.
MfG
HWK
spongebob.squarepants
User
Beiträge: 54
Registriert: Freitag 22. Mai 2009, 12:59

Dill hat geschrieben:das ist keine arroganz, ich weiss einfach bescheid. :twisted:

mal im erst, du siehst doch, dass du an die grenzen von dem teil stösst.
ich würde von dir als auftraggeber erwarten, dass du das kommunizierst, statt murks abzuliefern.
Und Du solltest mal den Murks lesen, den Du schreibst. Ich bin nicht der Auftraggeber, und jetzt ist aber gut.
spongebob.squarepants
User
Beiträge: 54
Registriert: Freitag 22. Mai 2009, 12:59

HWK hat geschrieben:Um die Wogen etwas zu glätten, wieder zurück zum Thema:
Hast Du pyobfuscate einmal testweise laufen lassen. Evtl. genügt das Ergebnis ja den Anforderungen. Ansonsten könnte man vielleicht einfach die Namensgenerierung z.B. in gen_name() etwas anpassen. Du kannst Dir den Sourcecode ja mal anschauen.
MfG
HWK
Ja, habe ich. M.M.n. versucht pyobfuscate aber teilweise auch noch, durch wenig sinnvolle Anweisungen etwas zu verschleiern, aber das kann man gegebenenfalls auch noch abklemmen. Danke für den Tipp.

Grüsse
spongebob.squarepants
User
Beiträge: 54
Registriert: Freitag 22. Mai 2009, 12:59

HWK hat geschrieben:Nochmals zu pyobfuscate:
Man könnte die Namen aus einer festen Liste, also nicht mehr zufällig wie im Original, auswählen lassen. 682 Namen sollten wohl für ein Skript reichen, ansonsten muss man halt das Skript verkleinern.
HWK
Aus den Begleittexten zum Modul entnehme ich, dass 682 Namen die Obergrenze für ein ganzes Projekt ist, also nicht nur für ein Teilscript

Grüsse
spongebob.squarepants
User
Beiträge: 54
Registriert: Freitag 22. Mai 2009, 12:59

@hawk: Bei nochmaliger Betrachtung von pyobfuscate und Applizierung Deiner Idee muss ich sagen: Top! Das klappt!

Danke und Grüsse
BlackJack

spongebob.squarepants hat geschrieben:
Dill hat geschrieben:das ist keine arroganz, ich weiss einfach bescheid. :twisted:

mal im erst, du siehst doch, dass du an die grenzen von dem teil stösst.
ich würde von dir als auftraggeber erwarten, dass du das kommunizierst, statt murks abzuliefern.
Und Du solltest mal den Murks lesen, den Du schreibst. Ich bin nicht der Auftraggeber, und jetzt ist aber gut.
Lies Du den Murks noch mal, denn Du hast ihn falsch verstanden. Zugegeben kann man das auch so verstehen, aber ich hab's auch so verstanden wie's sehr wahrscheinlich gemeint war. Nämlich das er von Dir als (Dein) Auftraggeber erwarten würde…
spongebob.squarepants
User
Beiträge: 54
Registriert: Freitag 22. Mai 2009, 12:59

Nee, danke. Den Kollegen habe ich schon mal auf meiner Blacklist. Da lese ich nicht mehr zwischen den Zeilen.

Technisch ist der Chip/das Modul eigentlich ganz gut. Und ich weiss nicht, warum ich jemanden etwas ausreden soll, der das will, nur weil ich es nicht fertigbringe, mit den Malessen des Dingens umzugehen. Wie es sich gezeigt hat, gibt es ja einen einfachen Weg um die Beschränkungen, auch das fehlende float hat sich inzwischen über Emulation gefunden.

Nicht aufgeben, also. Möglicherweise schaut mir die Professonalität nicht so aus dem A..., wie einigen anderen Zeitgenossen, aber glaubt mir - ich kann's auch.

Und wer mich anmachen will, soll erst mal deutsche Grammatik hinbekommen. Der Satz ist _so_ nämlich NICHT falsch zu verstehen. Ich gebe aber gerne mal Nachhilfe: "Als Auftraggeber würde ich von Dir erwarten..." wäre schon besser gewesen. In der anderen Form kann man ihn nur so verstehen, wie formuliert. PS: Ich kann auch arrogant. :)


Grüsse
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

wenn ich meine kritische meinung zu deinem geplanten vorgehen zu unpädagogisch oder unsensiblel oder gar grammatikalisch inkorrekt geäußert habe tut mir das leid, aber so übertreiben muss man es ja nicht, also halt mal die luft an.
http://www.kinderpornos.info
spongebob.squarepants
User
Beiträge: 54
Registriert: Freitag 22. Mai 2009, 12:59

get lost :(
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Jetzt muss ich doch mal Moderator spielen und euch bitten euch etwas zurückzuhalten, sonst mach ich den Thread dicht.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Habt ihr eigentlich nicht besseres zu tun, als euch hier virtuell zum Deppen zu machen?
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Antworten