Краткое руководство по встраиванию Jupyter Notebook
Энтузиасты науки о данных и машинного обучения публикуют свои исследования вместе с кодами, которые в основном написаны на Python или R, в своих блогах и статьях. Многие из нас до сих пор не могут предоставить наш код для интерактивного запуска на наших веб-страницах, не отвлекая пользователя, который постоянно читает наш блог. Новый веб-разработчик может ответить на эту загадку без какого-либо глубокого анализа.
‹iframe src = 'http: // localhost: 8888 /'› ‹/ iframe›
Приведенный выше тег HTML может решить проблему до тех пор, пока Content-Security-Policy не войдет в контекст. Зачем использовать Политику безопасности контента? Основное преимущество CSP - предотвращение использования уязвимостей межсайтового скриптинга. Это важно, потому что ошибки XSS имеют две характеристики, которые делают их особенно серьезной угрозой для безопасности веб-приложений.
- XSS повсеместно. Межсайтовый скриптинг постоянно упоминается как один из наиболее распространенных недостатков веб-приложений; в прошлом почти все крупные приложения страдали от XSS.
- XSS вреден. Злоумышленник, который использует такую ошибку и выполняет JavaScript в контексте сеанса другого пользователя, получает полный доступ к своим данным в уязвимом приложении и во всех других приложениях, размещенных в том же домене. Во многих случаях злоумышленник может скомпрометировать учетную запись и сохранить постоянный доступ, при этом пользователь не осознает, что что-то не так.
Без учета CSP это привело бы к пагубным последствиям для веб-сайтов и серверов. Существует множество руководств по встраиванию кодов записных книжек Jupyter на ваши веб-страницы с помощью связывателя и GitHub Gist в Интернете. Ссылки приведены в конце статьи.
Давайте быстро перейдем к тому, что мы исследуем в этой статье.
В настоящее время у популярных приложений есть серверная часть на основе Java и интерфейс на основе веб. Этот феноменальный подход был вознагражден разработчиками программного обеспечения и техническими специалистами. Например, Jenkins использует привязку веб-интерфейса со степлером из серверной части Java. В таком случае в некоторых случаях это приложение должно развиваться, поддерживая машинное обучение и науку о данных, что, вероятно, привлечет огромное количество технических пользователей для использования их услуг.
Когда эти приложения используют веб-страницы, может возникнуть необходимость в интеграции популярных записных книжек, редакторов кода и песочниц. Каждый запрос из веб-интерфейса должен быть защищен и надежен для серверной части.
Давайте посмотрим, как локально встроить блокнот Jupyter в статическую веб-страницу.
- Убедитесь, что в вашей системе установлен ноутбук Jupyter.
jupyter -- version
2. Настройте jupyter_notebook_config.py.
- Если у вас его нет, создайте его. Он создаст файл в
~/.jupyter/jupyter_notebook_config.py
jupyter notebook --generate-config
- Добавьте IP-адрес и порт вашего шлюзового сервера
# These are default configs. You have change if you are using # Enterprise Jupyter Hub or other gateway servers. c.NotebookApp.ip = ‘localhost’ c.NotebookApp.port = 8888
- Поскольку Jupyter использует tornado для обслуживания HTTP, вам необходимо добавить заголовки CSP в tornado_settings. Убедитесь, что вы указали правильный адрес http / https для использования заголовка CSP.
c.NotebookApp.tornado_settings = { 'headers': { 'Content-Security-Policy': "frame-ancestors https://localhost:8080/jenkins 'self' " } }
- Наконец, пользователь предпочтет записную книжку с одной вкладкой вместо того, чтобы возиться с несколькими вкладками на одной странице. Вы должны создать custom.js в каталоге jupyter.
~/.jupyter/custom/custom.js
define(['base/js/namespace'], function(Jupyter){ Jupyter._target = '_self'; });
3. Позже настроив все, вы можете использовать тег ‹/iframe›, чтобы успешно встроить блокнот jupyter на вашу веб-страницу.
<f:entry> <iframe width = "700" height=" 600" src="https://localhost:8888 </iframe> </f:entry>
вы можете настроить параметры iframe так, как хотите, на вашей странице :).
4. Известные проблемы
- Если вы по-прежнему получаете такие ошибки, как «Ошибка подключения» в консоли. Причина может быть в том, что подключение к веб-сокетам запрещается браузерами при использовании wss. Вы можете попробовать добавить
'unsafe-inline'
, иconnect-src https: wss:
определенно решит вашу проблему.
Я надеюсь, что все прочитали исчерпывающую статью о встраивании записной книжки Jupyter в веб-страницы.
Мир ✌.
Использованная литература: