L'intention est d'être extrêmement permissif dans l'acceptation des correctifs. Pour bénéficier des privilèges de validation, soumettez simplement votre première pull request ou demandez sur Arc Language Forum .
Installez d'abord Racket (v7.7 ou version ultérieure), puis dans un terminal, exécutez :
$ raco pkg install sha
$ git clone http://github.com/arclanguage/anarki
$ cd anarki
Vous pouvez démarrer la réponse interactive avec :
$ ./arc.sh
Ou démarrez l'actualité (et la réplique) avec :
$ cd apps/news
$ ./run-news
Si vous êtes nouveau sur Arc ou Lisp en général, le Tutorial est un bon point de départ.
Si vous rencontrez des problèmes, vérifiez
(help)
dans le champ de réponse Anarki est livré avec News , une application de style Hacker News .
Pour exécuter News , choisissez d'abord votre nom d'utilisateur (celui de l'administrateur),
$ cd anarki/apps/news
$ mkdir www
$ echo __username__ > www/admins
Vous pouvez avoir plusieurs administrateurs. Ajoutez-les tous à www/admins
, séparés par des espaces.
Attention : si vous exploitez déjà un site d'actualités , la migration vers ce fork pourrait gâcher les données de votre site. Venez nous en parler d'abord et assurez-vous de faire une sauvegarde avant la migration.
Maintenant, ouvrez le serveur,
$ ./run-news
Il y aura une pause pendant que le serveur se charge, avec quelques messages, puis vous verrez l'invite arc>
.
Accédez à http://localhost:8080. Cliquez sur connexion et créez le compte pour votre nom d'utilisateur. Vous devriez maintenant être connecté en tant qu'administrateur.
(Ne vous inquiétez pas user break
ou error writing
des messages.)
Pour personnaliser News , modifiez les variables en haut de apps/news/news.arc
. Pour modifier le port sur lequel votre serveur s'exécute, modifiez apps/news/run-news.arc
.
Toute modification interactive apportée à l'invite sera immédiatement reflétée sur le serveur, sans qu'il soit nécessaire de le redémarrer. Par conséquent, si vous apportez des modifications à apps/news/news.arc
, vous pouvez les charger en tapant (load "apps/news/news.arc")
dans le champ repl. Si vous arrêtez le serveur ou s'il tombe en panne pour une raison quelconque, les commandes saisies précédemment sont disponibles dans l'historique des commandes (au moins si Readline est installé).
Vous souhaiterez peut-être diffuser News en toute sécurité via HTTPS . Un exemple de configuration pour exécuter Nginx avec SSL comme proxy inverse pour News peut être trouvé dans anarki/extras/news.nginx.conf
.
Pour que les e-mails de réinitialisation de mot de passe soient envoyés, vous devez configurer un compte de messagerie à partir duquel les envoyer,
$ 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 propose des tests automatisés approfondis.
# start in the anarki directory
$ ./arc.sh
arc> (load "tests.arc")
Anarki n'est explicitement pas contraint de maintenir la compatibilité avec les versions en amont, et l'état de compatibilité peut varier énormément d'une validation à l'autre en fonction de qui est intéressé. Pour voir une liste de ce qui est différent, tapez (incompatibilities)
dans la réponse. Si vous apportez une modification incompatible, veuillez mettre à jour cette liste.
Tout le monde est invité à apporter des modifications à Anarki, mais assurez-vous que les tests continuent de réussir. Puisque nous nous appuyons sur le faisceau de tests unit-test.arc, veuillez également exécuter ses tests avant de valider des modifications :
$ ./arc.sh (exige 'lib/unit-test.arc/unit-test.arc) (charger "unit-test.arc/tests.arc") (test et erreur en cas d'échec)
Les expressions de raquette peuvent être évaluées avec la syntaxe ($ ...)
. Par exemple, (($ crypto-random-bytes) 16)
obtient la fonction crypto-random-bytes
de Racket et l'appelle.
Si vous écrivez beaucoup de code Racket et que vous souhaitez simplement utiliser Anarki pour une partie d'un projet plus important, vous pouvez raco pkg install anarki
et utiliser Anarki pour écrire des modules Racket :
#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))
Notez qu'Anarki n'a pas de portée de module privée ; la section (:provide ...)
est juste là pour faciliter l' require
d'une bibliothèque basée sur Anarki auprès de Racket .
Anarki a quelques problèmes pour transmettre les arguments de mots-clés aux fonctions Racket , mais keyword-apply
de Racket peut être utilisé pour cela.