Open source
Python
Mathematics
5 January 2015

SageMathCloud — мечта для любителей Python, математики и Linux

SageMathCloud (сокращённо SMC) — это онлайновый сервис, в котором можно написать математический или любой другой расчёт в Sage или IPython Notebook. Расчёт можно комбинировать с HTML, CSS, JavaScript, CoffeeScript, Go, Fortran, Julia, Gap, Axiom, R, Ruby, Perl, Maxima, Maple, Markdown, Wiki (и это неполный список!). При редактировании поддерживается мультикурсорность, можно включить биндинги Vim или Sublime Text. Пользователю также доступна консоль Ubuntu и доступ к проекту по ssh. Можно создавать документы LaTeX и встраивать в них код на Python, который не будет отображаться в итоговом pdf. Широкие возможности позволяют написать не просто расчёт с 2D и 3D графикой, а целое интерактивное приложение или собственный веб-сервер на Flask. Можно расшарить расчёт пользователям на редактирование, и Вы будете видеть, что они меняют и даже где стоит их курсор! При этом великолепии SageMathCloud имеет открытый исходный код, который выложен на Github.




Краткие сведения о проекте


Идея создания SMC принадлежит профессору математики университета Вашингтона William Stein. Кроме него над SMC работают Harald Schilly (маркетинг и тестирование), Keith Clawson (оборудование), а также Jon Lee, Andy Huchala и Nicholas Ruhland (веб-разработка).

SMC разрабатывается за счёт грантов National Science Foundation и образовательной грантовой программы от Google.

В настоящее время SMC находится в стадии бета-тестирования. Изредка глючит, но должен отметить, что стабильность и удобство работы приложения многократно выросла за два года моей работы в нём.

Большинство серверов расположено в США на территории университета Вашингтона. Есть несколько серверов в Европе. На серверах стоит Ubuntu 14.04.1 LTS (Trusty) c математической программой Sage. Также используется Google App Engine.

Основным источником информации и ресурсом для общения является форум пользователей SMC. Недавно открылся форум для разработчиков после окончательного перехода SMC в разряд открытых проектов. Активное общение идёт в чате Gitter; есть очень информативное FAQ на Github.

Каждый месяц количество пользователей неуклонно растёт. На сегодняшний день на SMC более 68 тыс. аккаунтов. Подробные статистические сведения об использовании SMC можно посмотреть на этой странице.

Обзор функционала и интерфейса SMC


Вход на сайт


Чтобы начать использовать SageMathCloud, перейдите на страницу https://cloud.sagemath.com, зарегистрируйтесь или залогиньтесь. К сожалению, изредка может появляться ошибка входа на сайт (обычно из-за нехватки памяти для баз данных). В этом случае Вы можете обратиться напрямую к европейским серверам SMC по следующим ip: 146.148.26.36 и 192.158.29.251.

Элементы интерфейса


Зайдя на сайт, Вы попадёте на страницу со списком проектов. Элементы интерфейса этой страницы представлены на скриншоте ниже (все скриншоты кликабельны).



Кликните по кнопке Create New Project для создания нового проекта, а потом по названию проекта, чтобы войти в него. При этом вы попадёте в файловый менеджер и увидите в верхней части страницы панель инструментов, представленную на скриншоте ниже.



Файловый менеджер


Ниже на скриншоте представлен интерфейс файлового менеджера:



Хотелось бы отметить несколько важных моментов:

  1. Файловый менедежер SMC умеет фильтровать файлы. Например, введя в фильтр строку pyparsing, я увижу только файлы, которые содержат в своём имени слово pyparsing.
  2. В файловом менеджере есть доступ к командной строке Linux. Я обычно использую эту строку, чтобы создать архив или распаковать его. Обратите внимание, что root заблокирован и в этой строке нет автодополнения по Tab. Ниже мы увидим 2ой способ доступа к терминалу с работающим автодополнением.
  3. SMC регулярно делает снимки проекта (кнопка Snapshots). Года два назад из-за сбоя я потерял было один файл, но через Snapshots восстановил его. После этого случая я больше таких сбоев не видел.


Настройки проектов: хештеги, совместное редактирование, ssh доступ, темы, биндинги Sublime Text и Vim.


Множество фишек SMC спрятаны в его настройках, поэтому в них обязательно нужно заглянуть! Вначале перейдём в настройки текущего проекта, кликнув по вкладке Settings. Ниже представлен скриншот страницы настроек с пояснениям.



Чтобы получить остальные фишки, перейдите к общим настройкам для всех проектов, кликнув по своему e-mail. Ниже скриншот с пояснениями.



Документы в SMC: Sage Worksheet, Ipython Notebook, LaTeX document, Terminal, Task list и Course.


SMC позволяет работать с обширным типом документов. Перейдём во вкладку New.



Несколько слов про «From Internet». Изначально эта кнопка работала для любых файлов с других сайтов. Увы, так получилось, что появилось много людей, которые злоупотребляли этим. Также в одно время часто пытались использовать сервера SMC для майнинга криптовалют. В итоге William Stein написал специальный антимайнинговый скрипт. Длительно выполняющиеся процессы этот скрипт может убить (сейчас, возможно, эта проблема решена). По этой же причине большинство сайтов заблокировано. Я точно помню, что работает копирование с GitHub и ряда ресурсов университетов Европы и США. В принципе можно скачать файл самому на компьютер и загрузить его на SMC. Если всё же нужна связь с конкретным сайтом, то нужно попросить William Stein открыть доступ к этому сайту (это бесплатно). Для этого напишите ему письмо или просто создайте сообщение с Вашей просьбой на форуме SMC.

В будущем в SMC появятся платные функции (планируется использовать Freemium). При их появлении можно будет разблокировать доступ к другим сайтам за денежку.

Работа в Sage Worksheet


Первый взгляд на Sage Worksheet


Sage Worksheet является наиболее напичканым различными возможностями. Создадим тестовый файл sage worksheet. Зайдя на чистый лист sage worksheet, вы увидите ещё одну панель инструментов, скриншот которой представлен ниже.



Из кнопок я обычно использую Run (вычислить), А (увеличить шрифт) и Save (Сохранить). Особенно интересна кнопка History (История). Она даёт пользователю ползунок — «шкалу времени». Перемещая ползунок, Вы увидите, как выглядела Ваша страница с расчётами раньше. Ничего более завораживающего я ещё не видел! Просто взгляните на видео ниже (оно без звука).



Информационные полоски


Давайте напишем любой код и вычислим его, нажав кнопку Run или комбинацию клавиш shift-enter. Ниже представлен скриншот с примером python-кода. Обратите внимание на информационные полоски.


Двойной клик на выводе (результате расчётов) скрывает код, повторный двойной клик отображает код.

Магические команды. Вставка html, css, js, пр.


Добавление html, css, js, coffescript, markdown, wiki и других вкусностей осуществляется через использование магических команд. Для получения полного списка из 56 магических команд вычислите:

%magics

Полный список магических команд в SMC:
%auto
%axiom
%capture
%coffeescript
%command
%cython
%default
%default_mode
%exercise
%file
%fork
%fortran
%fricas
%gap
%gap3
%giac
%go
%gp
%hide
%hideall
%html
%javascript
%julia
%kash
%lie
%lisp
%load
%macaulay2
%magics
%magma
%maple
%mathematica
%matlab
%maxima
%md
%mupad
%mwrank
%octave
%pandoc
%perl
%prun
%python
%r
%reset
%ruby
%runfile
%sage0
%scilab
%script
%sh
%singular
%time
%timeit
%typeset_mode
%var
%wiki


Рассмотрим к примеру использование html и css:



HTML и CSS код
%html(hide=False)
<style>
    a.hlink {
        cursor: pointer;
    }
    a.hlink:hover {
        background-color: yellow;
    }
</style>
<h3>
    Мои избранные сайты:
</h3>
<ol>
    <li>
        <a class="hlink" src="https://habrahabr.ru">Хабрахабр</a>
    </li>
    <li>
        <a class="hlink" src="http://www.opennet.ru">Opennet</a>
    </li>
    <li>
        <a class="hlink" src="https://cloud.sagemath.com">SageMathCloud</a>
    </li>
</ol>


Совсем короткий пример для Julia:

%julia
println("Привет, Хабр!")


Для остальных случаев (markdown, wiki, R, go, пр.) полностью аналогично.

Код можно загружать с помощью функции load(). Пример простенькой графической формы на HTML, CSS и JavaScript в SMC:



Современные веб-технологии позволяют встраивать 3D графику в страницу без использования flash и других плагинов. В SMC можно создавать двухмерную и трёхмерную графику, используя js фреймворки, например, three.js. Что интересно, если убрать курсор с 3D области, она преобразуется в картинку. Этот подход сделал работу с 3D графикой заметно удобнее (страница перестала дёргаться, повысилась производительность). Трёхмерный объект можно:
  • масштабировать (вращение колёсика мыши или левый клик + shift + перемещение курсора)
  • поворачивать (левый клик + перемещение курсора)
  • перемещать (ctrl + левый клик + перемещение курсора)

Видео ниже демонстрирует работу с 3D графикой (видео без звука).



Работа с терминалом


Выше я обещал показать вариант работы с терминалом, в котором работает автодополнение. Для этого необходимо нажать кнопку New, написать название файла, в котором будет запускаться терминал (например, Console) и нажать кнопку Terminal. Работа в терминале практически неотличима от работы в обычном терминале Linux. Главное отличие в том, что заблокирован root и копирование-вставка работают по ctrl+c и ctrl+v (а не ctrl+shift+c и ctrl+shift+v, как в обычной консоли). Ниже скриншот демонстрирует работу в терминале в SMC:



Кстати, я в одно время использовал в этой консоли git. Работало хорошо.

Про возможности Sage и SMC можно рассказывать ещё очень долго. В следующих статьях я буду стараться подробно освещать различные фишки и недокументированные возможности.

Вместо заключения


Дорогие пользователи Хабра! Видя, какие возможности для математических (и не только) расчётов предоставляет пользователю свободное ПО, в частности SageMathCloud, мне грустно видеть, что школьники и студенты зачастую даже и не знают о нём и используют проприетарные программы типа Mathcad и Matlab. Я считаю, что свободное ПО должно быть первым выбором!

Если мы объединимся, мы можем изменить это положение вещей. На мой взгляд необходимо сделать 3 вещи:

  1. Русифицировать интерфейс SMC,
  2. Написать справку и учебные пособия на русском языке,
  3. Рассказать про SMC своим друзьям и детям.

Я знаю, что такой подход работает. Например, САПР Компас популярен на отечественном рынке потому, что в рамках одной государственной программы Аскон почти каждой школе дала лицензии на использование этого продукта. Таким образом, необходимо максимально снизить порог входа пользователя в этот программный продукт.

Основной объём работ- написание документации по SMC на русском языке. В прошлом году я начал собирать эту информацию на своём ресурсе wikisage.ru (пожалуйста, не сочтите за рекламу). Я собирал материал по работе в Python и Sage (SMC). В планах — информация на русском про Pyparsing, Numpy, Matplotlib и другие пакеты Python. При желании Вы можете помочь проекту советом или помощью, написав в личку, в ВК или на почту. Моя мечта — чтобы большинство школьников, студентов, учёных и инженеров использовало Sage и Python для своих расчётов, а этот ресурс стал главным источником информации в рунете.

+49
34.8k 389
Comments 27