Learning in der Standarddokumentation
zu durchsuchen Wenn Sie lernen, wie die OTP-Dokumentation organisiert ist es viel einfacher zu finden, wird das, was Sie suchen (Sie neigen müssen lernen, welche Anwendungen bereitzustellen, die Module oder Arten von Modulen).
Auch das Durchsuchen der Dokumentation für Anwendungen ist oft recht lohnend - ich habe auf diese Weise viele wirklich nützliche Codes entdeckt - sys
, dbg
, toolbar
usw.
Der Unterschied zwischen Schale und erlang Modul erlang
Shell erlang einen etwas anderen Dialekt ist Erlang Modul. Sie können keine Modulfunktionen definieren (nur Spaß), Sie müssen Datensatzdefinitionen laden, um mit Datensätzen arbeiten zu können (rr/1
) und so weiter. Erlanges Erlangung von Erlang-Code in Bezug auf anonyme Funktionen ist etwas schwierig, aber wichtig für die Arbeit an Produktionssystemen mit einer Remote-Shell.
Erlernen der Interaktion zwischen der Shell und den {start, spawn} _link ed-Prozessen - Wenn Sie Shell-Code ausführen, der abstürzt (eine Ausnahme auslöst), wird der Shell-Prozess beendet und die Ausgangssignale an alle verknüpften Objekte gesendet. Dies wird wiederum den neuen gen_server herunterfahren, an dem Sie gerade arbeiten. ("Warum wird mein Server-Prozess halten verschwinden?")
Der Unterschied zwischen erlang Ausdrücke und guard Ausdrücke
Garde Ausdrücke (when-Klauseln) sind nicht Erlang Ausdrücke. Sie mögen ähnlich aussehen, aber sie sind sehr unterschiedlich. Guards können keine beliebigen Erlang-Funktionen aufrufen, sondern nur Guard-Funktionen (length/1
, die Typprüfungen, element/2
und einige andere, die in der OTP-Dokumentation spezifiziert sind). Wärter gelingen oder versagen und haben keine Nebenwirkungen. Erlang Ausdrücke können andererseits tun, was sie mögen.
-Code Laden
Ausarbeiten, wann und wie Code-Upgrades arbeiten, um die Beschwörung eines gen_server zu bekommen auf die neueste Version eines Callback-Modul (code:load(Mod), sys:suspend(Pid), sys:change_code(Pid, Mod, undefined, undefined), sys:resume(Pid).
) zu aktualisieren.
Der Code-Server-Pfad (code:get_path/0
) - Ich kann nicht zählen, wie oft ich auf undefinierte Funktionsfehler stieß, die sich als vergessen herausstellen, ein ebin-Verzeichnis zum Code-Suchpfad hinzuzufügen.
Gebäude erlang Code
eine nützliche Kombination von EDie Ausarbeiten (make:all/0
und erl -make
) und Gnu Make dauerte ziemlich lange Zeit (etwa drei Jahren so weit :).
Mein aktuelles Lieblingsmakefiles kann http://github.com/archaelus/esmtp/tree/master
Erlang-Verteilung
Erste Knotennamen, dns, Cookies und die ganzen Rest rechts, um die anderen Knoten zu net_adm:ping/1
in die Lage sein zu erkennen. Das braucht Übung.
Remote-Shell-IO Feinheit
Remembering group_leader()
-io:format
Anrufe auf dem entfernten Knoten laufen zu übergeben, so dass die Ausgabe in der Shell erscheint anstatt auf mysteriöse Weise verschwindet (ich glaube, der SASL Bericht Browser rb
noch ein Problem hat mit einigen seiner Ausgabe an den falschen Knoten sendet, wenn über einen Remote-Shell-Verbindung verwendet)
Gute Frage Joe, aber Sie sollten entweder Ihre Antworten als Antworten oder halten Sie sie in Ihrer Frage, nicht beides. Vorzugsweise sollten sie Antworten sein. – ryeguy