其目的是極度寬鬆地接受補丁。對於提交權限,只需提交您的第一個拉取請求或在Arc 語言論壇上提問即可。
首先安裝Racket (v7.7 或更高版本),然後在終端機中執行:
$ raco pkg install sha
$ git clone http://github.com/arclanguage/anarki
$ cd anarki
您可以使用以下命令啟動互動式 repl:
$ ./arc.sh
或以以下方式開始新聞(和回應):
$ cd apps/news
$ ./run-news
如果您是Arc或Lisp新手,教學是一個很好的起點。
如果遇到麻煩,請檢查
(help)
Anarki與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
進行任何更改,您可以透過在 repl 中鍵入(load "apps/news/news.arc")
來載入它們。如果您停止伺服器或伺服器因某種原因死機,則先前輸入的命令將在命令歷史記錄中可用(至少如果您安裝了Readline )。
您可能希望透過HTTPS安全地提供新聞服務。使用SSL運行Nginx作為新聞反向代理的範例配置可以在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顯然不受限於保持與上游版本的兼容性,並且兼容性狀態可能會根據誰感興趣而在不同提交之間大幅波動。若要查看不同之處的列表,請在 repl 中鍵入(incompatibilities)
。如果您進行了不相容的更改,請更新此清單。
歡迎任何人對 Anarki 進行更改,但請確保測試繼續通過。由於我們依賴 unit-test.arc 測試工具,因此請在提交任何更改之前執行其測試:
$ ./arc.sh (require 'lib/unit-test.arc/unit-test.arc) (load "unit-test.arc/tests.arc") (失敗時的測試與錯誤)
Racket表達式可以使用($ ...)
語法來計算。例如, (($ crypto-random-bytes) 16)
從Racket取得crypto-random-bytes
函數並呼叫它。
如果您編寫了大量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 ...)
部分只是為了讓您可以輕鬆地從Racket require
基於Anarki的庫。
Anarki在將關鍵字參數傳遞給Racket函數時遇到一些問題,但Racket的keyword-apply
可以用於此目的。