Skip to content

rigidus/moto

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Внимание!

Если вы просто хотите посмотреть пример исходника, написанного в стиле литературного программирования - то вам сюда: https://github.com/rigidus/moto/blob/master/hh.org

Этот документ отвечает на вопросы:

  • Что нужно сделать чтобы собрать проект
  • Что нужно сделать чтобы запустить собранный проект
  • Как установить и настроить Postgres
  • Зачем это все

Можно запустить проект, не собирая его, если вы просто хотите попробовать. Но в этом нет фана, потому что все интересное именно в литературном программировании и генерации кода.

Сборка

На момент, когда вы начнете это делать, у вас должны стоять:

Их установка, как правило, тривиальна, поэтому не будет здесь описываться.

Перед тем, как начать сборку, создаем каталог, где будет все лежать и переходим в него:

mkdir ~/repo

cd ~/repo

Orgmode

Находясь в каталоге ~/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

Установка и настройка Postgres

В ~/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 и вы вправе реализовывать все связанные с этим свободы. Контрибьюторы приветствуются, не только в написании кода, но и в привлечении пользователей, изучении технологий, тестировании и критике идей.

Если есть какой-то вопрос или непонятный момент - не стесняйтесь писать прямо в гитхаб.