Намерение состоит в том, чтобы быть чрезвычайно либеральным в принятии патчей. Чтобы получить права на фиксацию, просто отправьте свой первый запрос на включение или спросите на форуме Arc Language Forum .
Сначала установите Racket (v7.7 или новее), затем в терминале запустите:
$ raco pkg install sha
$ git clone http://github.com/arclanguage/anarki
$ cd anarki
Вы можете запустить интерактивный повтор с помощью:
$ ./arc.sh
Или начните новость (и ее ответ) с:
$ cd apps/news
$ ./run-news
Если вы новичок в Arc или Lisp в целом, хорошей отправной точкой будет Tutorial .
Если у вас возникли проблемы, проверьте
(help)
в ответе. Anarki поставляется в комплекте с News , приложением в стиле Hacker News .
Чтобы запустить News , сначала выберите свое имя пользователя (администратора),
$ cd anarki/apps/news
$ mkdir www
$ echo __username__ > www/admins
У вас может быть несколько администраторов. Добавьте их все в www/admins
, разделив пробелами.
Предупреждение . Если у вас уже есть новостной сайт, переход на этот ответвление может испортить данные вашего сайта. Сначала позвоните нам и обязательно сделайте резервную копию перед миграцией.
Теперь поднимите сервер,
$ ./run-news
Во время загрузки сервера произойдет пауза с некоторыми сообщениями, а затем вы увидите приглашение arc>
.
Перейдите по адресу http://localhost:8080. Нажмите «Войти» и создайте учетную запись под своим именем пользователя. Теперь вы должны войти в систему как администратор.
(Не беспокойтесь о user break
или сообщениях error writing
.)
Чтобы настроить News , измените переменные вверху apps/news/news.arc
. Чтобы изменить порт, на котором работает ваш сервер, измените apps/news/run-news.arc
.
Любые интерактивные изменения в приглашении будут немедленно отражены на сервере без необходимости его перезапуска. Следовательно, если вы вносите какие-либо изменения в apps/news/news.arc
, вы можете загрузить их, набрав (load "apps/news/news.arc")
в файле repl. Если вы остановите сервер или он по какой-то причине умрет, ранее введенные команды будут доступны в истории команд (по крайней мере, если у вас установлен Readline ).
Возможно, вы захотите безопасно передавать новости через HTTPS . Пример конфигурации для запуска Nginx с SSL в качестве обратного прокси-сервера для новостей можно найти в anarki/extras/news.nginx.conf
.
Для отправки писем о сбросе пароля необходимо настроить учетную запись электронной почты для их отправки:
$ 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 есть тщательные автоматизированные тесты.
# start in the anarki directory
$ ./arc.sh
arc> (load "tests.arc")
Anarki явно не ограничен поддержкой совместимости с предыдущими выпусками, и статус совместимости может сильно варьироваться от фиксации к фиксации в зависимости от того, кто проявляет интерес. Чтобы просмотреть список отличий, введите (incompatibilities)
в ответе. Если вы внесете несовместимое изменение, обновите этот список.
Любой может внести изменения в Anarki, но, пожалуйста, убедитесь, что тесты продолжают проходить. Поскольку мы полагаемся на тестовый пакет unit-test.arc, пожалуйста, запустите его тесты перед внесением каких-либо изменений:
$ ./arc.sh (требуется 'lib/unit-test.arc/unit-test.arc) (загружаем "unit-test.arc/tests.arc") (тестирование и ошибка при сбое)
Выражения рэкета можно вычислять с помощью синтаксиса ($ ...)
. Например, (($ crypto-random-bytes) 16)
получает функцию crypto-random-bytes
от Racket и вызывает ее.
Если вы пишете много кода Racket и хотите использовать Anarki только для части более крупного проекта, вы можете raco pkg install anarki
и использовать Anarki для написания модулей 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))
Обратите внимание, что Anarki не имеет области приватных модулей; Раздел (:provide ...)
предназначен только для того, чтобы упростить require
библиотеки на основе Anarki от Racket .
У Anarki есть некоторые проблемы с передачей аргументов ключевых слов в функции Racket , но для этого можно использовать keyword-apply
Racket .