kostenloser Webspace werbefrei: lima-city


Suche auf lima-city

  • in: Unterstützung gesucht für Logo Korrektur

    geschrieben von perlbotics

    Hallo,

    klar, Geschmacksache, aber ich finde das Logo zu "pummelig".
    Ich würde den dicken Kreis in der Körpermitte weglassen und evtl. die Bögen etwas herausziehen.

    Etwa so: https://perlbotics.lima-city.de/.eternal/20190824-logo-diet.png

    Aber nun kommt mir das Logo irgendwie bekannt vor...

    PB
  • in: Editoren

    geschrieben von perlbotics

    Hi,

    die Präferenzen hängen ja immer vom Anwendungszweck und den eigenen Vorlieben und Geldbeutel ab.

    Ich verwende für C/C++ und gelegentliche Java-Projekte gerne die kostenlose Netbeans IDE: www.netbeans.org

    Die neue Version hat viele Erweiterungen für HTML5 und gängige JS-Frameworks eingebaut.
    Man kann seine Änderungen live in einem angebundenen Chrome-Browser ansehen (WYSIWYG) (oder im eingebauten Webkit-Fenster der IDE) - fand' ich nicht schlecht.
    PHP und JS wird schon länger unterstützt.

    Evtl. ist das etwas für Dich? Ein Versuch kostet nur Zeit.

    Edit: Ein emacs ist auch immer griffbereit!
  • in: Zeilenumbruch in eine *.txt-Datei schreiben

    geschrieben von perlbotics

    Hallo things,


    Warum du nun das "\n" ans Ende setzen möchtest habe ich nicht verstanden. Ich erstelle beim Anmelden die Datei und weiß, dass es immer eine Zeile davor gibt. Mit einem "\n" am Ende bekomme ich u. U. eine Zeile am Ende, die eher stört und für mich nach Fehler riecht - darum hab ichs nun immer am Anfang... :/

    Was du über flushing und locking und puffern sagst, verstehe ich leider auch nicht ^^" Tut mir leid, ich bin noch nicht so bewandert...


    Ich bin mit PHP nicht sehr vertraut, aber die Prinzipien sind fast überall die selben.
    Bei der Zeilenpufferung wird die aktuelle Zeile im Speicher gepuffert und erst wenn das "\n" kommt, wird die Zeile auf das Speichermedium (Platte) übertragen (flush buffer). Das passiert normalerweise auch beim schließen der Datei.
    Daher sollte das was Du machst, eigentlich funktionierten.

    "File Locking" muss man durchführen, wenn mehrere Nutzer gleichzeitig in eine Datei schreiben wollen. Es darf immer nur einer gleichzeitig schreiben, weil es sonst passieren könnte, das Daten überschrieben werden oder die Reihenfolge nicht wie gewünscht ist.


    Dein Experiment hat ja gezeigt, dass es mit "\n foo \n" klappt - eigentlich ein Widerspruch.
    Könnte es sein, dass Dein Editor in einem Modus ist, der "\r\n" als Zeilenende-Kennung benötigt?
    Zeigt Dein Editor die Zeilen ordentlich an, wenn Du "\n" (Unix) durch "\r\n" (Windows) ersetzt?
    Wie sieht ein Hexdump der Datei aus? Stehen dort wo die "\n" stehen sollte "0A"s?

    Viel Erfolg.
  • in: Zeilenumbruch in eine *.txt-Datei schreiben

    geschrieben von perlbotics

    Hallo,

    was genau funktioniert nicht? "Kaputt bekommen", ist nicht sehr spezifisch ;-)

    Werden z.B. Zeilen durcheinandergeworfen?
    --> locking Problem untersuchen: Mehrere User schreiben gleichzeitig in die selbe Datei.

    Werden z.B. Zeilen nicht übernommen?
    --> flushing Probleme untersuchen (manchmal muss man explizit den Puffer flushen oder einen ungepufferten Modus aktivieren).

    Edit: Wird gar nichts mehr geschrieben?
    --> Zugriffsrechte, Logfiles, Plattenkapazität prüfen.

    Ich würde das "\n" gewohnheitsgemäß lieber ans Ende denn an den Anfang der Zeile setzen.
    Es gibt z.B. Programme, die erkennen so die letzte Zeile nicht.
    Das hat auch den Vorteil, dass beim Zeilengepufferten schreiben die ganze Zeile nach dem "\n" rausgeht.


    HTH
  • in: Problem mit einer Switch Case

    geschrieben von perlbotics

    if (type == DATA_WAVE_COUNT && data == SPECIAL)  {
    
             /* uiWaveCount == 0;   */    /* vorher */
             uiWaveCount = 0;             /* nachher */
    
    
             bIntroDone = true;
             CloseDoor(uiFrontDoor);
             CloseDoor(uiRunDoor);
             if (uiWaveCount == 0) {
                events.ScheduleEvent(EVENT_NEXT_WAVE, 9000);
             }
             return;
    }



    Vielleicht funktioniert es, wenn man den Vergleich (==) durch eine Zuweisung (=) ersetzt?
  • in: Ein Rätsel für Programmierer

    geschrieben von perlbotics

    Perl:

    ( $foo, $bar ) = ( $bar, $foo );


    Test:
    perl -E '($foo, $bar) = qw(wert test);   ($foo, $bar ) = ($bar, $foo);   say "$foo $bar" '


    Ausgabe:
    test wert


    Ist natürlich gemogelt, unter der Haube wird eine temp. Kopie angelegt :wink:
  • in: Übertragungsfunktion G(s) gesucht

    geschrieben von perlbotics

    Hi,

    ich komme auf:

    Formel: G(j\omega) = \frac{1}{j\omega RC + j^2\omega^2 LC +1}

    (im mittleren Term des Nenners fehlte ein "L")

    Hier kann man wg. der Herleitung aus dem stationären Fall auch Formel: s = j\omega verwenden.

    Sauberer wäre die echte Transformation aus dem Zeitbereich (Differentialgleichung) in den Laplace-Bereich.

    Welchen Lösungsweg (Differentialgleichung oder komplexe Widerstandsnetze) der Prüfer hier sehen möchte hängt aber vermutlich davon ab, wie der Stoff vermittelt worden ist.

  • in: double Runden auf beliebig viele Stellen

    geschrieben von perlbotics

    Hi,

    laut Doku macht Math.round() auch nur (bis auf Sonderfälle +/- oo): (int)Math.floor(a + 0.5f)

    Beispiel: Für a = 0.3 wird also Math.floor(0.8) = 0 und für a=0.7 wird Math.floor(1.2) = 1 berechnet - Sieht wie Ab-/Aufrunden aus.

    Wenn man auf Nachkommastellen runden möchte, dann muss man halt das Komma erst einmal nach rechts verschieben (also mit einer Zehnerpotenz multiplizieren), 0.5 addieren und dann wieder das Komma nach links verschieben (also durch eine Zehnerpotenz dividieren):

    Also z.B. mit s = 10 ( = 10^1) schiebt man das Komma eine Stelle nach rechts. Für n Stellen: s= 10^n;

    (float)Math.floor( a * s + 0.5f) / s;

    Beispiel: a=1.36, s=10 --> Math.floor( 13.6 + 0.5 ) / 10 = Math.floor( 14.1 ) / 10 = 14/10 = 1.4

    Das funktioniert natürlich nur solange, wie die Genauigkeit der Zahlendarstellung (float, double) ausreicht.
    Ggf. muss man auf Zahlendarstellungen mit höherer Genauigkeit oder Strings umsteigen.
    .oO( Mögen mir die Mathematiker für meine Darstellung verzeihen ;-) )

  • in: Github: 1 Zeile geändert -> Ganze Datei geändert

    geschrieben von perlbotics

    Hi

    wenn alle Zeilen betroffen sind, dann klingt das für mich nach einem LF (Unix) vs. CR/LF (DOS) Konflikt.

    Wenn es das ist, dann ist dieser Link evtl. hilfreich:
    http://stackoverflow.com/questions/170961/whats-the-best-crlf-handling-strategy-with-git

  • in: Lua Entwicklungsumgebung

    geschrieben von perlbotics

    Hi,

    hier gibt's einige Meinungsäußerungen dazu:

    http://stackoverflow.com/questions/143939/whats-a-good-ide-to-use-for-lua

    HTH
  • in: instream.readLine() funktioniert nicht richtig

    geschrieben von perlbotics

    Hi,

    das hier sieht doch nicht schlecht aus http://sourceforge.net/projects/telnetd/

    Embeddable telnet daemon written 100% in Java.

    Evtl. kann man den Protokoll-Anteil aus TelnetIO.java abgucken?


  • in: instream.readLine() funktioniert nicht richtig

    geschrieben von perlbotics

    Hi,

    wenn ich das richtig sehe, dann verbindest Du Dich mittels eines Telnet-Clients mit dem Server. Telnet ist nicht transparent, sondern ein Protokoll, dass Steuerkommandos übertragen kann (Prozesse stoppen, Flusskontrolle, etc. -- siehe https://tools.ietf.org/html/rfc854).

    Ich vermute, Du siehst im Log diese Steuerzeichen. Abhilfe. Telnetprotokoll (minimum) implementieren oder kein Telnet als Client verwenden.
    Statt telnet könntest Du socat (zum Testen) verwenden oder evtl. ist der Telnet-Client so konfigurierbar, dass er weniger Steuerzeichen sendet?

    Außerdem ist das, was Du da treibst, ganz schön fahrlässig. Du überträgst (wenn derzeit auch nur per localhost) das Root-PWD im Klartext.
    Wenn das keine Programmierübung ist, dann würde ich persönlich lieber auf SSH zurückgreifen.
    Besser: Niemals root-Login per SSH erlauben, stattdessen login als normaler User und dann lokal root-Rechte erwerben. Wenn Du schon sudo verwendest, dann kannst Du auch einzelne Kommandos für bestimmte User als root ausführen lassen, ohne dass der User das Root-PWD kennen muss.

    HTH
  • in: Daten sicher verschlüsseln?

    geschrieben von perlbotics

    Hi,

    winrar verwendet AES-256? Mit langen und guten Passworten könnte das schwer zu knacken sein. Allerdings weiß ich nicht, ob das Partitionieren viel bringt.
    Könnte denn ein Angreifer auch mit einer halben entschlüsselten Datei etwas anfangen? Wurde die Datei vor dem Partitionieren verschlüsselt?

    Diese Selbstbau-Verschlüsselungen sind oft sehr viel unsicherer als man sich das auf Anhieb vorstellt (http://www.schneier.com/crypto-gram-9810.html#cipherdesign).

    Ich persönlich würde lieber einen TrueCrypt-Container verwenden (https://de.wikipedia.org/wiki/TrueCrypt).

    Für maximale Paranoia: TC-Container mit Hidden-Partition und mehreren Keyfiles (Dateien, die wie ein Teil des Schlüssels verwendet werden - diese Dateien kann man getrennt aufbewahren). Dazu ein langer (> 20 Zeichen) und schwer zu generierender Schlüssel.

    Nachteil von TC-Containerdateien: Entweder werden sie schnell zu klein oder sie sind nur wenig befüllt.

    HTH

    Edit zu Deinem Edit:

    Bei HDDs kann man mit "Wipe"-Tools die Blöcke, die von der Datei belegt werden, überschreiben.
    Das soll selbst bei einmaligen Überschreiben relativ sicher sein.
    Bei FlashDrives funktioniert das i.d.R. nicht, da dort dank "Wear Levelling" immer andere Blöcke verwendet werden. Das Überschreiben genügt dort nicht. Manche Laufwerke kann man nur komplett sicher löschen.
  • in: Daten aus HTMLParser zurückgeben

    geschrieben von perlbotics

    Hi,

    ich habe zwar keine Ahnung von Python, aber die OO-Prinzipien sind oft sehr ähnlich. Dieser Schnipsel funktioniert wie gewünscht:

    from HTMLParser import HTMLParser
    
    links = [] # globale Variable:  nicht gut
    
    class MyHTMLParser(HTMLParser):
        def handle_starttag(self, tag, attrs):
            if tag.startswith('a'):
    			for attr in attrs:
    				if attr[0].startswith('href'):
    					link = attr[1]
    					links.append(link)
    					print "in: ",link
    					return links
        def feed(self, text):
    #        super(MyHTMLParser,self).feed( text )  # geht nicht - k.A. warum...
            HTMLParser.feed(self, text)  # Basisklasse erledigt die Arbeit
            return links                 # Ergebnis (aus globaler Variable - urgh!)
    
    
    parser = MyHTMLParser()
    links  = parser.feed('<a href="http://pbeckmann.de"><a href="http://pbeckmann.de/2">')
    
    print "links : ", links
    
    
    #-- Ausgabe
    # in:  http://pbeckmann.de
    # in:  http://pbeckmann.de/2
    # links :  ['http://pbeckmann.de', 'http://pbeckmann.de/2']


    Wenn Du link = parser.feed(...) aufruft, dann wird die Methode parser() von HTMLParser aufgerufen, da Du in MyHTMLParser diese Methode nicht überschrieben hast. (Edit:)MyHTMLParser::parser() kennt jedoch Deine globale Variable links[] nicht und weiß auch nicht, dass Du diese Liste als Ergebnis haben möchtest. Vielleicht gibt es eine andere Möglichkeit, das Ergebnis aus der Callback-Methode (handle_starttag) an die Basisklasse zu übergeben? Dazu müsste man die Dokumentation von HMTLParser lesen ;-)

    Die Lösung besteht darin, die Methode feed zu überschreiben. Diese ruft nun die Methode selben Namens der Basisklasse auf und gibt dann das Ergebnis zurück. Ist nicht schön, funktioniert aber. Nicht schön, weil die Basisklassendefinition scheinbar nicht vorsieht, dass diese Methode ein Ergebnis zurückliefert und weil hier der Rückgabewert nicht aus einer Objektvariable stammt. Ggf. Macht es Sinn eine Methode get_links() einzuführen, die dann das Ergebnis zurückgibt?

    Alternativ könntest Du auch in Deiner ursprünglichen Version die Zuweisung links = parser.feed(...) weglassen und nur parser.feed() aufrufen (Du überschreibst das globale Ergebnis mit dem leeren Rückgabewert der Methode der Basisklasse). Das Ergebnis steht ja schon in links (globale Variable) und müsste nur noch ausgegeben werden.

    Einfachste Lösung:
    #falsch: links = parser.feed('<a href="http://pbeckmann.de"><a href="http://pbeckmann.de">')
    #korrekt (links nicht überschreiben):
                     parser.feed('<a href="http://pbeckmann.de"><a href="http://pbeckmann.de">')


    Noch ein Tipp: Verwende besser eine Objektvariable (etwa: self.links) statt der globalen Variable (links). Wenn Du mehrere Instanzen von MyHTMLParser verwendest, könnte es sonst passieren, dass sie sich gegenseitig die Link-Listen überschreiben. Hier eine Variante, die das umsetzt und außerdem nicht die Semantik der Methode feed() verändert. Das Ergebnis wird per get_links() übergeben.

    from HTMLParser import HTMLParser
    
    class MyHTMLParser(HTMLParser):
    
        def __init__(self):
            HTMLParser.__init__(self)  # Konstruktor der Basisklasse aufrufen
            self.links = []                        # Objektvariable initialisieren
    
        def handle_starttag(self, tag, attrs):
            if tag.startswith('a'):
    			for attr in attrs:
    				if attr[0].startswith('href'):
    					link = attr[1]
    					self.links.append(link)
    					print "in: ",link
    					return  #  scheinbar erwartet HTMLParser hier keinen Rückgabewert?
        def get_links(self):
            return self.links
    
    
    parser = MyHTMLParser()
    
    # Keine Zuweisung an die "links"-Variable, das ist ein extra Schritt,
    # hier wird HTMLParser.feed() verwendet!
    parser.feed('<a href="http://pbeckmann.de"><a href="http://pbeckmann.de/2">')
    
    links = parser.get_links()
    print "links   : ", links
    
    #-- Ausgabe
    # in:  http://pbeckmann.de
    # in:  http://pbeckmann.de/2
    # links   :  ['http://pbeckmann.de', 'http://pbeckmann.de/2']


    HTH
  • in: Merkwürdiger Session Bug

    geschrieben von perlbotics

    Hallo,

    Ist die Session an eine TCP/IP Session gebunden (HTTP 1.1)?

    Reine Spekulation(!):

    Es könnte sein, dass ein Load-Balancer beim erneuten TCP/IP Verbindungsaufbau an einen Server vermittelt, der die Session nicht kennt. Wenn man den Verbindungsaufbau ein paar mal wiederholt, landet man schließlich wieder bei dem Server, der die Session-ID kennt (der Text: NodeID=l2 könnte ein Indiz sein - dieser Server kennt sie nicht).

    Das wäre eine mögliche Erklärung für das beobachtete Phänomen.

    Man kann Load-Balancer so konfigurieren, dass sie die Session-ID für einen gewissen Zeitraum merken und dann "sticky" immer an den selben Server (node) weiterreichen, aber darauf hat der Client-Programmierer i.d.R. keinen Einfluss.

    Evtl. musst Du die TCP/IP Session bestehen lassen und mehrere Abfragen darüber tätigen (z.B. Daemon- oder FCGI-Process)?

    HTH

  • in: C++ festplatten temperatur

    geschrieben von perlbotics

    Hallo,

    Linux? Windows?

    Schau' Dir einmal die Quelltexte der Smartmon-Tools zur Inspiration an: http://sourceforge.net/apps/trac/smartmontools

    Quick'n dirty: Die HDD-Temperatur per Aufruf von smartctrl ermitteln und die Ausgabe parsen. Z.B.

    Linux-Beispiel:
    smartctl -A /dev/sda | awk '/^194/ { print $10 }'
    liefert hier im Moment '32' (Grad Celsius).

    (194 ist das Temperatur-Attribut: siehe https://de.wikipedia.org/wiki/Self-Monitoring,_Analysis_and_Reporting_Technology)

    Aus C/C++ kann man z.B. mittels popen() ein externes Programm aufrufen und die Ausgabe zeilenweise einlesen und auswerten (awk - Aufruf weglassen um mehr Werte zu sehen).

    Vielleicht hilft auch dieser Link? http://smartlinux.sourceforge.net/smart/index.php (Windows Quelltexte --> Developer Zone)

    HTH
  • in: Lichtschranke bauen

    geschrieben von perlbotics

    Im PDF steht, dass es sich um abgestimmte Pärchen aus Sender/Empfänger handelt.
    Vermutlich sind die so vorselektiert damit sie die Kennlinien erfüllen, weil sie bei vergleichbaren Wellenlängen
    ihr Intensitäts-/Empfindlichkeits-Maximum haben?

    Theoretisch könntest Du auch eine leistungsstarke IR-LED verwenden, die im Bereich von 850-980 nm strahlt (z.B. 940 nm) (s. Datenblatt).
    Einen Scheinwerfer würde ich nicht bauen. Bei größeren Entfernungen würde ich mit einer Linse und einer Abschirmung gegen Streulicht experimentieren (IR-Filter).

    Aus der Fragestellung schließe ich, dass eine größere Distanz überbrückt werden soll.

    Edit: Das hier sieht doch gut aus - ok, der Lerneffekt ist geringer als beim Selbstbau:
    http://www.pollin.de/shop/dt/NTg5OTgxOTk-/Bausaetze/Diverse/Infrarot_Lichtschranken_Bausatz.html
  • in: Lichtschranke bauen

    geschrieben von perlbotics

    Ok, dann mache ich das so, wie du es beschrieben hast. Ein Frage habe ich momentan: Ist das 2 mal der selbe Transistor, oder 2 mal ein komplett anderer, oder wie?

    Nein, D1 und T1 sind das Pärchen bestehend aus IR-Diode und IR-Fototransistor (keine Fotodiode im strengen Sinn) - jedenfalls sieht das so im PDF-Dokument aus. T2 ist der BC548.

    T1 ist nicht umkreist.

    Nö, es soll ja auch Licht reinkommen ;-)
    Bei Fototransistoren macht man das so (s. Wikipedia-Artikel).

    Bei D2 zeigen die Pfeile in die falsche Richtung. So ist das eine Leuchtdiode. Es soll aber eine Fotodiode sein.

    Nein, bei einer Lichtschranke muss etwas Licht aussenden - das ist die IR-LED (D1 = Sender).
    T1 würdest Du als Fotodiode bezeichnen (Empfänger).
  • in: Lichtschranke bauen

    geschrieben von perlbotics

    Hi,

    schau' Dir einmal das Datenblatt an (http://www.pollin.de/shop/downloads/D120592D.PDF).

    Welchen Abstand sollen denn Sender und Empfänger haben? Wenn es mehr als ca. 20mm sind,
    würde ich nicht zugreifen, da es sich hier eher um ein Sender-/Empfänger-Pärchen für Sensoren handelt,
    die auf kurze Distanz arbeiten. Für höhere Reichweiten müsste man wohl mit Optiken und/oder gepulsten
    Signalen arbeiten.

    Die Schaltung ist nicht ok. Annahme: Schalten der Last, wenn Strahl unterbrochen wird.

    Der Fototransistor (http://de.wikipedia.org/wiki/Fototransistor) sollte nicht direkt die
    Last, sondern den Treibertransistor (BC548) ansteuern, der auch als Inverter arbeiten kann, je nachdem
    ob bei Unterbrechung des Strahls oder bei Vorhandensein des Strahls geschaltet werden soll.

    Im einfachsten Fall wird die LED mit einem Vorwiderstand betrieben, damit sie leuchtet - fertig.

    Evtl. wie hier dargestellt: http://perlbotics.lima-city.de/.eternal/20100104-lichtschranke.png ?
    Im beleuchteten Zustand fließt der Strom über R2 und T1. Das Potential am Kollektor von T1 ist nahe Null und T2 sperrt.
    Im unbeleucheten Zustand wird T1 "hochohmig" und T2 schaltet durch. Der Basisstrom von T2 wird
    über R2+R3 begrenzt.


    Für Experimente sollte das einen ersten Denksanstoß geben ... eine Fahrstuhltür würde ich damit nicht absichern ;-)
  • in: Startseite: Ungelesene Nachrichten

    geschrieben von perlbotics

    Oops - das ist mir entgangen, sorry.
    Danke für den Hinweis.

    So schnell werden Wünsche wahr ;-)



  • in: Startseite: Ungelesene Nachrichten

    geschrieben von perlbotics

    Hallo,

    man kann neuerdings die Startseite (nach dem Login) seinen Wünschen gemäß gestalten.
    Ich fände es gut, wenn man eine Möglichkeit zur Anzeige noch ungelesene Nachrichten hätte.

    Also z.B. einen Neuen Block Nachrichten (PN) für den Startseiten-Editor (http://www.lima-city.de/homepage/editor).

    Alternativ wäre auch ein entsprechender neuer Eintrag, im Statusfenster rechts
    (LC-Domain: Nachrichten, # Gulden, Mein Profil, Favoriten, Ausloggen) denkbar.

    So hätte man alles auf einen Blick.

    Danke und Gruß
    Perlbotics
  • in: Wie viel Strom kann ich durch ein 0,1mm Kabel leiten?

    geschrieben von perlbotics

    Das sollte von der Stromdichte (http://de.wikipedia.org/wiki/Stromdichte) her funktionieren:

    Formel: A_{Draht} \approx \frac{\pi}{4}  \cdot 0,1^2 \, mm^2 \approx 7,85 \cdot 10^{-3}\, mm^2

    Formel: J = \frac{I}{A_{Draht}} = \frac{37,5 \cdot 10^{-3} A}{7,85 \cdot 10^{-3} mm^2} \approx 4,78 \frac{A}{mm^2} < 6 \: bis \: 10  \frac{A}{mm^2}

    Faustformel: max. 10 A pro Quadratmillimeter Cu-Draht. Bei sehr hohen Frequenzen gilt die Formel allerdings nicht mehr.

    Ob die Isolation des Lackdrahts hält? Kann ich nicht sagen. Der Hersteller des Drahtes müsste die Meßwerte kennen oder sich auf eine Norm beziehen, in der diese Werte spezifiziert sind.
    Für normale Anwendungen (Kleinsignaltrafos, etc.) und bei sauberer Verarbeitung (keine Kratzer, z.B.) sollte die Isolation ausreichend sein.
  • in: Parameter auf gültigkeit prüfen

    geschrieben von perlbotics

    Hi,
    bitte versuche einmal:
    if not "%1"=="" goto ok
    rem hier ggf eine Fehlermeldung
    ...
    rem beenden?   dann:    goto :eof
    rem           sonst:    geht's hier einfach weiter
    
    :ok
    rem weiter mit Dingen, für die %1 einen Wert haben muss...


    HTH
  • in: Einfache Transistorschaltung gibt immer Strom

    geschrieben von perlbotics

    Hi,

    An der Stelle kommt ein Relais hin (da habe ich bis jetzt immer Verbraucher geschrieben, da der Verbraucher ja nebensächlich ist).

    bei einem Relais als Last gehört auch immer noch eine Freilaufdiode dazu, die den Transistor vor Spannungsspitzen schützen soll, die auftreten können, wenn das Relais abfällt:
    http://de.wikipedia.org/wiki/Schutzdiode#Freilaufdiode

    Was die Verdrahtung angeht; naja manchmal hilft ein Wechsel der Darstellung :wink:
    perlbotics.lima-city.de/.eternal/20091223-schaltung4.png (SCNR)

    Viel Erfolg!
  • in: Variable in Variable

    geschrieben von perlbotics

    Hi,

    das hier scheint zu funktionieren:

    @echo off
    for /F "tokens=1-3 delims=|" %%a in ("4|cols|22") do (
       set erstens=%%a
       set zweitens=%%b
       set drittens=%%c
    )
    
    echo 1.) %erstens%
    echo 2.) %zweitens%
    echo 3.) %drittens%
    
    pause


    Ausgabe:
    1.) 4
    2.) cols
    3.) 22
    Drücken Sie eine beliebige Taste . . .


    Details: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/for.mspx?mfr=true
  • in: Binäre Datei mit Python decodieren

    geschrieben von perlbotics

    Hallo,

    Reichen die Informationen die hier gegeben sind aus, um eine Datei zu decodieren?

    beim Querlesen des Dokuments sind mir folgende Punkte aufgefallen:
    - keine Angabe zur "checksum" (vermutlich simple Addition mod 65536; kein CRC?)
    - Zeitstempel: Bruchtteile von Tagen? (vermutlich ähnlich wie bei Excel?)
    - mehrere Versionen: hoher Aufwand, wenn man alle Versionen unterstützen möchte
    - variable "Endiness": kann den Aufwand verdoppeln, wenn man mehrere Plattformen im Sinn hat
    - ModuleAdditionalDataStruct: klingt so, als könne da jeder Hersteller machen, was er will --> Doku-Problem, evtl. Lizenz-Probleme
    - geringe Komplexitätserhöhung in Phase 1) (s.u.) durch optionale Werte und listen komplexerer Konstrukte

    Man kann die Sache in zwei Phasen angehen:
    1.) Zerlegen der Datei unter Kenntnis der Struktur und der einfachen Datentypen (uint, int, char[], etc.)
    2.) Interpretation und Darstellung (XML?) der Daten.

    Den ersten Teil kann man ziemlich direkt umsetzen.
    Beim 2. Teil solle man Kenntnisse aus der Problemdomäne besitzen. Ob das alles dokumentiert ist?

    Zum Testen wäre es sinnvoll, wenn man Beispiele von korrekt kodierten Dateien hätte (konnte ad-hoc keine finden).

    Nun zur eigentlichen Frage: Bin kein Python-Experte, aber in Perl würde man auf pack/unpack zurückgreifen und unter Windows auf den 'binary' Mode beim lesen der Files achten - oder gleich mit sysread() arbeiten.

    Scheinbar kennt Python das auch:
    pack/unpack: http://docs.python.org/library/struct.html
    files (mode: 'rb'): http://docs.python.org/library/functions.html#open

    HTH

  • in: Anwendung als Prozess ausfüren

    geschrieben von perlbotics

    nohup: ignoriere Eingabe und hänge Ausgabe an ?nohup.out? an

    Das bedeutet, dass Dein Programm vom Terminal keine Eingaben mehr entgegen nimmt (STDIN geschlossen), was in Deinem Fall vermutlich OK ist.
    Dafür werden die Ausgaben des so in den Hintergrund versetzen Programms am Ende der Datei nohup.out angehängt.
    Du kannst Dir das Ergebnis z.B. mit
    less nohup.out
    ansehen oder mit
    tail -f nohup.out
    ständig verfolgen.
    Aber vermutlich gibt es da nicht viel Interessantes zu sehen... und Du kannst die Datei beim nächsten mal löschen.
  • in: Anwendung als Prozess ausfüren

    geschrieben von perlbotics

    Hm,

    habe hier kein Ubuntu laufen (SuSE 11.1, KDE).

    Experiment:
    konsole>  xterm -e bash  &                       .oO( xterm öffnet sich )
    konsole> 
    
    xterm> nohup xeyes &
    xterm>

    Beim Klicken auf (X) des xterms wir dieses geschlossen, aber xeyes läuft weiter.

    Rätselhaft... (was der OP beschreibt).
    Vielleicht ein Fall für startproc?

  • in: Anwendung als Prozess ausfüren

    geschrieben von perlbotics

    Sorry, dann fehlen halt essentielle Angaben....

    Welches Programm? Standardprogramm oder selber programmiert?
    Selber programmiert: Signalhandler implementieren.

    Welches Terminal-Programm (xterm, konsole, screen, etc.) ?

    GUI-Programm oder nicht?

    GUI: Existiert ein -iconic Switch oder nicht?

    Eine GUI automatisch zu verkleinern, wenn die Shell - aus der es heraus manuell gestartet worden ist -
    geschlossen wird, ist mit einfachen Mitteln m.W. nicht möglich.
    Aber wozu? Wenn es eine GUI ist reicht ein Klick auf das Minimieren-Icon...

    Oder ich verstehe etwas völlig falsch...

    Funktioniert denn
    nohup cppappl &
    nicht?
  • in: Anwendung als Prozess ausfüren

    geschrieben von perlbotics

    Du schickst ein Programm in den Hintergrund (background process), wenn Du beim Starten in der Kommandozeile ein & anhängst.

    Wenn Dein Programm den Namen cppappl hat, dann kannst Du im einfachsten Fall das Programm mit
    cppappl &
    starten. Allerdings werden dann Ausgaben (STDOUT, STDERR) weiterhin in der Console erscheinen, was oft als störend empfunden wird.

    Bei GUI-Applikationen kann also das Umleiten der Ausgabe nach /dev/null sinnvoll sein, da man die Ausgabe i.d.R. nur zum Debugging nutzt. Dann verwendest Du
    cppappl >/dev/null 2>/dev/null &
    oder kürzer
    cppappl >/dev/null 2>&1 &

    Bei Non-GUI-Applikationen interessiert i.d.R. die Ausgabe, dann kann es sinnvoll sein, die Applikation in einem eigenen minimierten Fenster zu starten
    xterm -iconic -e cppappl &

    oder man leitet die Ausgabe in eine Datei um, die man sich später ansehen kann, z.B.
    cppappl >ausgabe.txt 2>fehler.txt &

    Anschliessend kann man sich die Ausgaben des Programms in fehler.txt oder ausgabe.txt ansehen.

    Es hängt also von der Art der Anwendung (interaktiv(GUI) oder nicht) ab und ob man etwas mit der (Standard-)Ausgabe machen möchte.

    (Edit: typos)
  • in: Anwendung als Prozess ausfüren

    geschrieben von perlbotics

    Hallo,

    evtl. hilft bereits das Starten der Applikation im Hintergrund ?
    cppappl &

    Wenn das Programm ein logout (kein Herunterfahren!) überstehen soll, dann könnte auch
    nohup (http://en.wikipedia.org/wiki/Nohup) einen Versuch lohnen.

    Bei Programmen mit GUI könnte der Switch -iconic (oder ähnlich) vorhanden sein, der die Applikation minimiert startet.

    Auch denkbar: non-GUI-Applikation aus xterm heraus minimiert starten:
    xterm -iconic -e cppappl &

    HTH

    Edit: Annahme, dass Dein Programm den Namen cppappl hat.
  • in: Wettervorhersage mit einer Messstation

    geschrieben von perlbotics

    Hallo,

    ein ganz schön ambitioniertes Projekt! Auf Basis der Daten einer Messstation wird man wohl bestenfalls das
    lokale Wetter mit einer hoffentlich zufriedenstellenden Wahrscheinlichkeit vorhersagen können.
    Wenn man sich jedoch darauf beschränkt (lokales Wetter, Kurzzeitprognose, schwache Aussage:
    besser/schlechter/bleibt so), sind die Chancen für eine Vorhersage evtl. gar nicht mal so schlecht?

    Also Aussagen, wie: Morgens regnerisch bei 7 Grad, gegen Mittag sonniger bei 25 Grad. Nachts regnerisch bei 22 Grad. wird man sich abschminken können.

    Das Gute daran ist, dass man bereits alle erforderlichen Daten vorliegen hat und nicht Googlen muss.
    Die Messwerte habt ihr bereits: Das Wetter von morgen war vorgestern das Wetter von gestern.

    Ich spinne jetzt mal (weiter):

    Klein anfangen: Vorhersage für den nächsten Tag oder sogar nur 12h.

    Vermutlich müsst ihr ein bisschen mit den Daten spielen um ein Gefühl dafür zu bekommen, welche Parameter für eine Prognose gut geeignet sind. Zu viele dürfen es nicht werden, da sonst eure Grunddatenmenge zu gering ist (ca. 105.000 Samples?).

    Grundidee:
    Ermitteln der Wahrscheinlichkeit für eine Prognose auf der Basis ähnlicher Wettersituationen unter Einbeziehung der Wettersituation (1..N Tage zuvor).
    Ermitteln einer Heuristik, die bestimmt, was ein ähnlich schöner/schlechter/unveränderter Tag ist (der schwierigste Teil!).
    Evtl. aus bekannten Messwerten, neue Kenngrößen herleiten. Also statt den Luftdruck (abs.) auszuwerten, die Änderungen berücksichtigen (1. und/oder 2. Ableitung).
    Erkennen und kompensieren fehlerhafter Messwerte.

    Zum Schluss kommt etwas heraus wie:
    Bei einer Wettersituation wie heute, wurde es am nächsten Tag schöner (82%), schlechter (12%), ähnlich (6%).
    Das wäre schon eine super Prognose (deutliche Abweichung von 33%/33%/33%)!

    Vielleicht klappt's ja? Bei Aktienkursen klappt es jedenfalls nicht, aber da sind ja auch Menschen am Werk ;-)
    Das lokale Wettermodell ändert sich hoffentlich nicht so schnell - davon leben die Bauernregeln.

    Googled mal nach: (Kurzzeit)-Korrelation, Aktienkurse vorhersagen, Neuronale Netze, Markov-Modell, etc.

    Es kann auch passieren, dass aus der vorliegenden Daten nichts herzuleiten ist, bzw.
    das eingebettete Modell nur sich selbst beschreibt und sich mit jedem neuen Tag (neue Messergebnisse)
    stark verändert (Chaos) - aber auch das ist eine Erkenntnis bis zu deren Erlangung man viel gelernt hat - z.B. Messreihen auszuwerten usw. (der Weg ist das Ziel ;-).

    Viel Erfolg.

Login zum Webhosting ohne Werbung!