La intención es ser extremadamente permisivo a la hora de aceptar parches. Para obtener privilegios de confirmación, simplemente envíe su primera solicitud de extracción o pregunte en Arc Language Forum .
Primero instale Racket (v7.7 o posterior), luego en una terminal, ejecute:
$ raco pkg install sha
$ git clone http://github.com/arclanguage/anarki
$ cd anarki
Puede iniciar la respuesta interactiva con:
$ ./arc.sh
O comience las noticias (y la respuesta) con:
$ cd apps/news
$ ./run-news
Si eres nuevo en Arc o Lisp en general, un buen punto de partida es el Tutorial .
Si tiene problemas, verifique
(help)
en la respuesta Anarki viene con News , una aplicación estilo Hacker News .
Para ejecutar Noticias , primero elija su nombre de usuario (el del administrador),
$ cd anarki/apps/news
$ mkdir www
$ echo __username__ > www/admins
Puede tener varios administradores. Agréguelos todos a www/admins
, separados por espacios en blanco.
Advertencia : si ya está ejecutando un sitio de noticias , migrar a esta bifurcación podría alterar los datos de su sitio. Ven a hablar con nosotros primero y asegúrate de hacer una copia de seguridad antes de la migración.
Ahora abre el servidor,
$ ./run-news
Habrá una pausa mientras el servidor se carga, con algunos mensajes, luego verá el mensaje arc>
.
Vaya a http://localhost:8080. Haga clic en iniciar sesión y cree la cuenta para su nombre de usuario. Ahora deberías iniciar sesión como administrador.
(No se preocupe por user break
o los mensajes error writing
).
Para personalizar Noticias , cambie las variables en la parte superior de apps/news/news.arc
. Para cambiar el puerto en el que se ejecuta su servidor, modifique apps/news/run-news.arc
.
Cualquier cambio interactivo en el mensaje se reflejará inmediatamente en el servidor, sin necesidad de reiniciarlo. Por lo tanto, si realiza algún cambio en apps/news/news.arc
, puede cargarlos escribiendo (load "apps/news/news.arc")
en la respuesta. Si detiene el servidor o muere por algún motivo, los comandos ingresados previamente estarán disponibles en el historial de comandos (al menos si tiene Readline instalado).
Es posible que desee publicar noticias de forma segura a través de HTTPS . Puede encontrar una configuración de ejemplo para ejecutar Nginx con SSL como proxy inverso para News en anarki/extras/news.nginx.conf
.
Para que se envíen correos electrónicos de restablecimiento de contraseña, debe configurar una cuenta de correo electrónico desde donde enviarlos.
$ 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 cuenta con pruebas automatizadas exhaustivas.
# start in the anarki directory
$ ./arc.sh
arc> (load "tests.arc")
Anarki no está explícitamente obligado a mantener la compatibilidad con las versiones anteriores, y el estado de compatibilidad puede variar enormemente de un compromiso a otro dependiendo de quién esté interesado. Para ver una lista de las diferencias, escriba (incompatibilities)
en la respuesta. Si realiza un cambio incompatible, actualice esta lista.
Cualquiera puede realizar cambios en Anarki, pero asegúrese de que las pruebas sigan pasando. Dado que confiamos en el arnés de prueba unit-test.arc, ejecute también sus pruebas antes de realizar cualquier cambio:
$ ./arc.sh (requiere 'lib/unit-test.arc/unit-test.arc) (carga "unit-test.arc/tests.arc") (prueba y error en caso de falla)
Las expresiones de raqueta se pueden evaluar con la sintaxis ($ ...)
. Por ejemplo, (($ crypto-random-bytes) 16)
obtiene la función crypto-random-bytes
de Racket y le realiza una llamada.
Si escribes mucho código de Racket y solo quieres usar Anarki como parte de un proyecto más grande, puedes raco pkg install anarki
y usar Anarki para escribir módulos de 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))
Tenga en cuenta que Anarki no tiene ámbitos de módulo privados; la sección (:provide ...)
está ahí para facilitar la require
de una biblioteca basada en Anarki de Racket .
Anarki tiene algunos problemas para pasar argumentos de palabras clave a las funciones de Racket , pero keyword-apply
de Racket se puede utilizar para eso.