Die Absicht besteht darin, bei der Annahme von Patches äußerst freizügig zu sein. Um Commit-Berechtigungen zu erhalten, senden Sie einfach Ihre erste Pull-Anfrage oder fragen Sie im Arc Language Forum .
Installieren Sie zuerst Racket (v7.7 oder höher) und führen Sie dann in einem Terminal Folgendes aus:
$ raco pkg install sha
$ git clone http://github.com/arclanguage/anarki
$ cd anarki
Sie können die interaktive Antwort starten mit:
$ ./arc.sh
Oder starten Sie die Nachrichten (und die Antwort) mit:
$ cd apps/news
$ ./run-news
Wenn Sie neu bei Arc oder Lisp im Allgemeinen sind, ist das Tutorial ein guter Ausgangspunkt.
Wenn Sie auf Probleme stoßen, überprüfen Sie dies
(help)
im Repl Anarki wird mit News geliefert, einer App im Hacker-News -Stil.
Um News auszuführen, wählen Sie zunächst Ihren Benutzernamen (den Administrator) aus.
$ cd anarki/apps/news
$ mkdir www
$ echo __username__ > www/admins
Sie können mehrere Administratoren haben. Fügen Sie sie alle durch Leerzeichen getrennt zu www/admins
hinzu.
Warnung : Wenn Sie bereits eine News -Site betreiben, könnte die Migration zu diesem Fork die Daten Ihrer Site durcheinander bringen. Sprechen Sie zunächst mit uns und erstellen Sie vor der Migration unbedingt ein Backup.
Rufen Sie nun den Server auf,
$ ./run-news
Während der Server geladen wird, gibt es eine Pause mit einigen Meldungen, dann wird die Eingabeaufforderung arc>
angezeigt.
Gehen Sie zu http://localhost:8080. Klicken Sie auf „Anmelden“ und erstellen Sie das Konto mit Ihrem Benutzernamen. Sie sollten jetzt als Administrator angemeldet sein.
(Machen Sie sich keine Sorgen über user break
oder error writing
Nachrichten.)
Um News anzupassen, ändern Sie die Variablen oben in apps/news/news.arc
. Um den Port zu ändern, an dem Ihr Server läuft, ändern Sie apps/news/run-news.arc
.
Alle interaktiven Änderungen an der Eingabeaufforderung werden sofort auf dem Server angezeigt, ohne dass dieser neu gestartet werden muss. Wenn Sie also Änderungen an apps/news/news.arc
vornehmen, können Sie diese laden, indem Sie (load "apps/news/news.arc")
in die Replik eingeben. Wenn Sie den Server stoppen oder er aus irgendeinem Grund abstürzt, sind zuvor eingegebene Befehle im Befehlsverlauf verfügbar (zumindest wenn Sie Readline installiert haben).
Möglicherweise möchten Sie News sicher über HTTPS bereitstellen. Eine Beispielkonfiguration für die Ausführung von Nginx mit SSL als Reverse-Proxy für News finden Sie in anarki/extras/news.nginx.conf
.
Damit E-Mails zum Zurücksetzen des Passworts versendet werden können, müssen Sie ein E-Mail-Konto einrichten, von dem aus Sie diese E-Mails versenden können.
$ echo "[email protected]" > www/app-email ; email
$ echo "smtp.example.com" >> www/app-email ; smtp server
$ echo "[email protected]" >> www/app-email ; user
$ echo "1234" >> www/app-email ; password
Anarki verfügt über gründliche automatisierte Tests.
# start in the anarki directory
$ ./arc.sh
arc> (load "tests.arc")
Anarki ist ausdrücklich nicht darauf beschränkt, die Kompatibilität mit Upstream-Releases aufrechtzuerhalten, und der Kompatibilitätsstatus kann stark von Commit zu Commit schwanken, je nachdem, wer daran interessiert ist. Um eine Liste der Unterschiede anzuzeigen, geben Sie (incompatibilities)
bei der Antwort ein. Wenn Sie eine inkompatible Änderung vornehmen, aktualisieren Sie bitte diese Liste.
Jeder ist willkommen, Änderungen an Anarki vorzunehmen, aber bitte stellen Sie sicher, dass die Tests weiterhin bestanden werden. Da wir auf die Testumgebung „unit-test.arc“ angewiesen sind, führen Sie bitte auch deren Tests durch, bevor Sie Änderungen vornehmen:
$ ./arc.sh (erfordert 'lib/unit-test.arc/unit-test.arc) (lade „unit-test.arc/tests.arc“) (test-and-error-on-failure)
Racket -Ausdrücke können mit der ($ ...)
Syntax ausgewertet werden. Beispielsweise erhält (($ crypto-random-bytes) 16)
die Funktion crypto-random-bytes
von Racket und ruft sie auf.
Wenn Sie viel Racket -Code schreiben und Anarki nur für einen Teil eines größeren Projekts verwenden möchten, können Sie raco pkg install anarki
und Anarki zum Schreiben von Racket- Modulen verwenden:
#lang anarki
(:provide function-for-use-in-racket)
(= racket-import ($.dynamic-require ...))
(load "relative/path.arc")
(def utility-for-use-in-racket (x)
(* x (racket-import x))
Beachten Sie, dass Anarki keine privaten Modulbereiche hat; Der Abschnitt (:provide ...)
dient lediglich dazu, die require
einer Anarki -basierten Bibliothek von Racket zu vereinfachen.
Anarki hat einige Probleme mit der Übergabe von Schlüsselwortargumenten an Racket -Funktionen, aber dafür kann Rackets keyword-apply
verwendet werden.