Внимание!
Если вы просто хотите посмотреть пример исходника, написанного в стиле литературного программирования - то вам сюда: https://github.com/rigidus/moto/blob/master/hh.org
Этот документ отвечает на вопросы:
- Что нужно сделать чтобы собрать проект
- Что нужно сделать чтобы запустить собранный проект
- Как установить и настроить Postgres
- Зачем это все
Можно запустить проект, не собирая его, если вы просто хотите попробовать. Но в этом нет фана, потому что все интересное именно в литературном программировании и генерации кода.
На момент, когда вы начнете это делать, у вас должны стоять:
- emacs (http://www.gnu.org/software/emacs/)
- git (http://git-scm.com/)
- sbcl (http://sbcl.org/)
- quicklisp (http://quicklisp.org/)
- postgresql (http://www.postgresql.org/)
- ditaa (http://ditaa.sourceforge.net/)
Их установка, как правило, тривиальна, поэтому не будет здесь описываться.
Перед тем, как начать сборку, создаем каталог, где будет все лежать и переходим в него:
mkdir ~/repo
cd ~/repo
Находясь в каталоге ~/repo
, скачиваем последнюю версию
org-mode
- расширения, которое уже стоит в емаксе, но, к
сожалению, часто не самой свежей версии. В той версии, которую я
использую, поменялся способ работы с org-tables, поэтому я
рекомендую забирать версию с моего репозитория:
git clone https://github.com/rigidus/org-mode.git
Переходим в появившийся каталог и собираем:
cd org-mode
make
make autoloads
Открываем файл конфигурации emacs ~/.emacs.d/init.el
и
прописываем собранный org-mode:
;; OrgMode http://orgmode.org/manual/Installation.html
(add-to-list 'load-path "/home/rigidus/repo/org-mode/lisp")
(require 'org-install)
Возвращаемся в исходный каталог:
cd ~/repo
Скачиваем последнюю версию проекта:
cd ~/repo
git-clone https://github.com/rigidus/moto.git
Открываем ~/repo/moto/doc.org
в emacs-e
Загружаем генераторы:
M-x load-file
~/repo/moto/generators.el
Без этого шага при генерации не найдутся некоторые необходимые функции, что вызовет ошибку генерации.
Выполняем генерацию кода (org-babel-tangle) в открытом в emacs-е
файле ~/repo/moto/doc.org
, нажимая комбинацию клавишь C-c C-v t
Сгенерируется множество файлов проекта, в основном, в каталоге
~/repo/moto/src
Выполняем генерацию документации в формате html (org-export) в
открытом в emacs-е файле ~/repo/moto/doc.org
, нажимая комбинацию
клавиш C-c C-e h
Сгенерируется файл документации ~/repo/moto/doc.html
Аналогичным образом можно поступать со всеми файлами модулей - это
файлы с расширением org
, которые лежат в корневом каталоге
~/repo/moto/
Если понадобится изменить процесс генерации, то функции, которые за него отвечают, лежат в “Определения сущностей” -> “Функции для кодогенерации сущностей”
Чтобы запустить проект, необходимо иметь:
- sbcl
- quicklisp
Необходимо, чтобы quicklisp мог найти систему проекта. Для этого в
~/.sbclrc
дописываем следущий код#+quicklisp (mapcar #'(lambda (x) (pushnew x ql:*local-project-directories*)) (list #P"~/repo/moto/" ))
- postgres
Эти данные для входа лежат в ~/repo/moto/doc.org в разделе “Глобальные определения”
- Пользователь postgres
- Базу данных
Обеспечив выполнение этих условий, заходим в emacs
, набираем M-x
slime
и в открывшемся буфере (ql:quickload "moto")
Все должно заработать. Если нет - связывайтесь со мной.
Чуть не забыл, веб-интерфейс размещен на порту 9997
В ~/repo/moto/doc.org
в секции “Глобальные определения” написаны имя базы данных, логин и пароль
Для систем Ubuntu/Debian:
sudo apt-get install postgresql postgresql-contrib postgresql-client
sudo -i -u postgres
postgres$ createuser --interactive
....
postgres$ createdb DB_NAME
postgres$ psql -d DB_NAME
В консоль postrges ввести:
ALTER USER ylg PASSWORD '...';
\q
См. туториал https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-14-04
Это все было задумано и написано (и пишется в данный момент) как исследование ряда подходов в программировании в применении к конкретным практическим задачам. Ну и ради общественной пользы, понимаемой очень широко, включая как пользу от самого продукта, так и пользу от исследуемых технологий и приемов их применения.
Весь код лицензируется под свободной лицензией GPLv3 и вы вправе реализовывать все связанные с этим свободы. Контрибьюторы приветствуются, не только в написании кода, но и в привлечении пользователей, изучении технологий, тестировании и критике идей.
Если есть какой-то вопрос или непонятный момент - не стесняйтесь писать прямо в гитхаб.