Главная » Разное » Санс по клеточкам в тетради: Санс по клеточкам в тетради
Санс по клеточкам в тетради: Санс по клеточкам в тетради
Posted on
Содержание
Drasler — познавательный сайт, смешные картинки, интересные статьи
Автор: admin
/
Май 26, 2019
/
Фото/Картинки
Смотрите на нашем портале лучшие картинки «Фото кошек разных пород скачать» в отличном качестве. У нас ежедневно появляются новые изображения на любой вкус, на сайте вы сможете посмотреть заставки пингвинов на рабочий стол, рисунки по клеточкам, картинки из мультфильмов Леди Баг и Супер Кот, цветы для фона презентации, открытки поздравления со свадьбой и днем рождения, поделки из овощей и фруктов для детей, а также много чего другого интересного.
Читать полностью
Автор: admin
/
Май 26, 2019
/
Фото/Картинки
Смотрите на нашем портале лучшие картинки «Фото руки мамы и ребенка» в отличном качестве. У нас ежедневно появляются новые изображения на любой вкус, на сайте вы сможете посмотреть заставки пингвинов на рабочий стол, рисунки по клеточкам, картинки из мультфильмов Леди Баг и Супер Кот, цветы для фона презентации, открытки поздравления со свадьбой и днем рождения, поделки из овощей и фруктов для детей, а также много чего другого интересного.
Читать полностью
Автор: admin
/
Май 26, 2019
/
Фото/Картинки
Смотрите на нашем портале лучшие картинки «Обезьяна с большими губами фото» в отличном качестве. У нас ежедневно появляются новые изображения на любой вкус, на сайте вы сможете посмотреть заставки пингвинов на рабочий стол, рисунки по клеточкам, картинки из мультфильмов Леди Баг и Супер Кот, цветы для фона презентации, открытки поздравления со свадьбой и днем рождения, поделки из овощей и фруктов для детей, а также много чего другого интересного.
Читать полностью
Автор: admin
/
Май 26, 2019
/
Фото/Картинки
Смотрите на нашем портале лучшие картинки «Классные фотки девушек вк без лица» в отличном качестве. У нас ежедневно появляются новые изображения на любой вкус, на сайте вы сможете посмотреть заставки пингвинов на рабочий стол, рисунки по клеточкам, картинки из мультфильмов Леди Баг и Супер Кот, цветы для фона презентации, открытки поздравления со свадьбой и днем рождения, поделки из овощей и фруктов для детей, а также много чего другого интересного.
Читать полностью
Автор: admin
/
Май 26, 2019
/
Фото/Картинки
Смотрите на нашем портале лучшие картинки «Обои для рабочего стола поздняя осень природа» в отличном качестве. У нас ежедневно появляются новые изображения на любой вкус, на сайте вы сможете посмотреть заставки пингвинов на рабочий стол, рисунки по клеточкам, картинки из мультфильмов Леди Баг и Супер Кот, цветы для фона презентации, открытки поздравления со свадьбой и днем рождения, поделки из овощей и фруктов для детей, а также много чего другого интересного.
Читать полностью
Автор: admin
/
Май 26, 2019
/
Фото/Картинки
Смотрите на нашем портале лучшие картинки «Картинки 2048 х 1152 для ютуба аниме» в отличном качестве. У нас ежедневно появляются новые изображения на любой вкус, на сайте вы сможете посмотреть заставки пингвинов на рабочий стол, рисунки по клеточкам, картинки из мультфильмов Леди Баг и Супер Кот, цветы для фона презентации, открытки поздравления со свадьбой и днем рождения, поделки из овощей и фруктов для детей, а также много чего другого интересного.
Читать полностью
Автор: admin
/
Май 26, 2019
/
Фото/Картинки
Смотрите на нашем портале лучшие картинки «Рисунки по клеточкам черной ручкой в тетради» в отличном качестве. У нас ежедневно появляются новые изображения на любой вкус, на сайте вы сможете посмотреть заставки пингвинов на рабочий стол, рисунки по клеточкам, картинки из мультфильмов Леди Баг и Супер Кот, цветы для фона презентации, открытки поздравления со свадьбой и днем рождения, поделки из овощей и фруктов для детей, а также много чего другого интересного.
Читать полностью
Автор: admin
/
Май 26, 2019
/
Фото/Картинки
Смотрите на нашем портале лучшие картинки «Обои на телефон Алиса в Стране Чудес» в отличном качестве. У нас ежедневно появляются новые изображения на любой вкус, на сайте вы сможете посмотреть заставки пингвинов на рабочий стол, рисунки по клеточкам, картинки из мультфильмов Леди Баг и Супер Кот, цветы для фона презентации, открытки поздравления со свадьбой и днем рождения, поделки из овощей и фруктов для детей, а также много чего другого интересного.
Читать полностью
Автор: admin
/
Май 26, 2019
/
Фото/Картинки
Смотрите на нашем портале лучшие картинки «Картинки для детей для детского сада радуга» в отличном качестве. У нас ежедневно появляются новые изображения на любой вкус, на сайте вы сможете посмотреть заставки пингвинов на рабочий стол, рисунки по клеточкам, картинки из мультфильмов Леди Баг и Супер Кот, цветы для фона презентации, открытки поздравления со свадьбой и днем рождения, поделки из овощей и фруктов для детей, а также много чего другого интересного.
Читать полностью
Автор: admin
/
Май 26, 2019
/
Фото/Картинки
Смотрите на нашем портале лучшие картинки «Картинки Эйфелева башня Париж на рабочий стол» в отличном качестве. У нас ежедневно появляются новые изображения на любой вкус, на сайте вы сможете посмотреть заставки пингвинов на рабочий стол, рисунки по клеточкам, картинки из мультфильмов Леди Баг и Супер Кот, цветы для фона презентации, открытки поздравления со свадьбой и днем рождения, поделки из овощей и фруктов для детей, а также много чего другого интересного.
Читать полностью
учебное пособие для подготовки абитуриентов к Единому государственному экзамену
python — скрыть код при экспорте блокнота Jupyter в HTML
спросил
Изменено
2 месяца назад
Просмотрено
76 тысяч раз
Я ищу способ скрыть ячейки кода (входные данные) при экспорте файла .iipynb в HTML. Я не хочу, чтобы ячейки кода были видны вообще (не какая-то кнопка, которая их отключает/включает). Вывод предназначен для людей, которые понятия не имеют, что такое язык программирования. Я пробовал много вещей, которые я нашел в Интернете, но ничего не работает.
Спасибо
питон юпитер
3
на данный момент (nbconvert версия 5.6.0) кажется, что самым простым решением является предоставление аргумента --no-input при использовании интерфейса командной строки nbconvert:
jupyter nbconvert yourNotebook.ipynb --no-input
работает как по волшебству
больше информации здесь
4
Это можно сделать с помощью шаблона NBConvert. Большинство примеров предназначены для латекса/PDF и не будут работать с HTML, который использует другой набор шаблонов (и, по какой-то причине, другое расширение и немного другой синтаксис файла).
Запишите следующее в файл шаблона с именем hidecode.tpl :
Теперь, если у вас нет опции --no-input , используйте --TemplateExporter.exclude_input=True , которая доступна начиная с версии 5.2.1.
1
В дополнение к ответу @vincentVega вам необходимо добавить оператор --to , иначе будет выдана следующая ошибка: ValueError: Пожалуйста, укажите формат вывода с помощью '--to '.
jupyter nbconvert YourNotebook.ipynb --no-input --to html
Приготовьте ноутбук Jupyter
Перейдите в Anaconda Prompt -> расположение блокнота jupyter и введите приведенную ниже команду
Это преобразует блокнот Jupyter в html со всеми ячейками, выровненными по правому краю.
1
Я написал статью о том, как скрыть код в Jupyter Notebook разными способами. По моим наблюдениям, есть несколько способов, которыми это можно сделать.
1. Скрыть весь код в
nbconvert
При экспорте блокнота с nbconvert вам нужно добавить --no-input в команду:
jupyter nbconvert --to html --no-input your-html блокнот.ipynb
2. Скрыть выделенные ячейки
Вы можете скрыть выделенные ячейки, добавив тег hide_code , как показано на анимации ниже: —TagRemovePreprocessor.remove_cell_tags='{«hide_code»}’ my-notebook.ipynb
3. Экспорт в HTML с помощью Mercury
Mercury — это программа с открытым исходным кодом для совместного использования ноутбуков нетехническими пользователями. Он может скрывать код. Он также может создавать виджеты для блокнота, которые связаны с переменными в коде. Процесс экспорта записной книжки контролируется заголовком YAML, ниже приведен пример YAML, который скрывает код:
HTML (веб-сайт), созданный для ноутбука с Mercury :
1
Я наконец обнаружил, что: https://pypi.org/project/hide_code/0.2.0/
Это расширение jupyter, и оно работает как шарм. Я использую командную строку для преобразования блокнота в html, так как кнопки, которые идут с расширением, у меня не работают.
3
Для моего варианта использования я хотел иметь возможность создавать экспорт без выходных данных из записной книжки и с минимальным объемом ручной работы. Адекватное решение, которое мне удалось склеить, выглядит следующим образом:
В первой ячейке выполните некоторый javascript, чтобы получить имя текущей записной книжки. Имя будет сохранено в переменной nb_name , которая доступна в текущей области выполнения Python.
В ячейке 2 передайте полученное имя вызову оболочки и сохраните html с --no-input . «!» в блокноте jupyter указывает вызов оболочки, а «&» используется для передачи переменной из текущей области выполнения python в вызов оболочки.
Ячейка 2:
print(nb_name)
!jupyter nbconvert --output-dir='./docs' --no-input --to html $nb_name
2
Преобразование файла кода ipynb в файл HTML без кода (с использованием Python)::
Шаг 1. Предположим, что ваш файл Untitled. ipynb сохранен в папке «Загрузки» вашего ноутбука.
Шаг 2: Откройте приглашение Anaconda или Cmd, вставьте приведенную ниже команду, чтобы скрыть коды, и сохраните файл как Untitled.html:
Примечание: путь к файлу Untitled.ipynb может отличаться, и его необходимо изменить там, где мы используем cd Downloads, на cd new_path.
Я использовал nbinteract (https://www.nbinteract.com/) для публикации страницы и #HIDDEN (https://gitter.im/nbinteract/Lobby/) поверх ячейки. Он не задокументирован и подлежит изменению, но они сохранят его для обратной совместимости. fastai) для экспорта блокнотов Jupyter в уценку. Команда nbdev_nb2md .
Когда вы это сделаете, если вы поставите # скрыть в верхней части любой ячейки блокнота, он не будет экспортирован в уценку. Это будет проигнорировано.
Полную информацию см. в этом сообщении в блоге: https://www.fast.ai/2020/01/20/nb2md/
Твой ответ
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя электронную почту и пароль
Опубликовать как гость
Электронная почта
Обязательно, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Продвинутые хитрости с блокнотами Jupyter
Я люблю блокноты Jupyter! Они отлично подходят для экспериментов с новыми идеями или наборами данных, и хотя «игровые площадки» моего ноутбука начинаются как беспорядок, я использую их, чтобы выкристаллизовать четкую идею для создания моих окончательных проектов.
Jupyter настолько хорош для интерактивного исследовательского анализа, что легко упустить из виду некоторые другие его мощные функции и варианты использования. Я хотел написать сообщение в блоге о некоторых менее известных способах использования Jupyter, но их так много, что я разбил сообщение на две части.
Сегодня в части 1 я описываю, как использовать Jupyter для создания конвейеров и отчетов. В следующем посте я опишу, как использовать Jupyter для создания интерактивных информационных панелей.
Проект, сопровождающий этот блог, можно найти на платформе Domino для обработки и анализа данных .
Magics
Вы, наверное, знаете, что ноутбуки можно запускать с разными ядрами (например, R, Julia) — не только с Python. Чего вы, возможно, не знаете, так это того, что даже в блокноте вы можете запускать разные типы кода в разных ячейках. С «магией» можно использовать разные языки. Однако доступные магические возможности зависят от ядра ноутбука.
Запустив % lsmagic в ячейке, вы получите список всех доступных заклинаний. Вы можете использовать % , чтобы запустить однострочное выражение для запуска с помощью команды magics. Или вы можете использовать двойной %% для запуска многострочного выражения.
Некоторые из моих любимых:
% env для вывода списка переменных среды.
! : запустить команду оболочки. Например, ! пип заморозить | grep pandas , чтобы узнать, какая версия pandas установлена.
% matplotlib inline для отображения графиков matplotlib в блокноте.
% pastebin 'file.py' , чтобы загрузить код в pastebin и получить возвращенный URL-адрес.
% bash для запуска ячейки с bash в подпроцессе.
%time засечет все, что вы оцените
%%latex для отображения содержимого ячейки как LaTeX
%timeit засечет все, что вы оцениваете, несколько раз и выдаст вам лучшее, а среднее время
%prun , %lprun , %mprun может дать вам построчную разбивку времени и использования памяти в функции или сценарии. Pynash предоставляет хорошее руководство по использованию каждого из них.
%% HTML : для отображения ячейки как HTML. Таким образом, вы даже можете встроить изображение или другой медиафайл в свой блокнот:
Вы даже можете использовать магию, чтобы смешивать языки в одном блокноте. Например, rmagics позволяет запускать код R, включая построение графиков, в блокноте Python. Обратите внимание, что вам сначала нужно загрузить расширение rmagics .
Как описано в документации rmagics, вы можете использовать %Rpush и %Rpull для перемещения значений туда и обратно между R и Python:
. Магия SQL и магия cython. Вы можете прочитать о более распространенных магиях здесь. Серьезно, вы могли бы потратить целый день на изучение этого!
Трубопроводы
Магия удобна сама по себе, но она действительно сияет, когда вы их комбинируете. Эти функции могут помочь вам создать конвейеры в одном визуальном потоке, комбинируя шаги на разных языках. Знакомство с магией дает вам возможность использовать наиболее эффективное решение для каждой подзадачи и связывать их вместе для вашего проекта.
При таком использовании блокноты Jupyter превращались в «сценарии визуальной оболочки», предназначенные для работы с данными. Каждая ячейка может быть шагом в конвейере, который может напрямую использовать язык высокого уровня (например, R, Python) или команду оболочки более низкого уровня. В то же время ваш «сценарий» может также содержать красиво отформатированную документацию и визуальный вывод по этапам процесса. Он может даже документировать свою собственную производительность, автоматически записывая использование ЦП и памяти в своих выходных данных.
Пакетная обработка, планирование и отчеты
Как и любой другой скрипт Python, ваш ноутбук можно запустить в пакетном режиме. Используя nbconvert, вы можете рассчитать всю записную книжку неинтерактивно, сохраняя ее на месте или во множестве других форматов.
Эта возможность делает ноутбуки мощным инструментом для ETL и отчетности. Для отчета просто запланируйте периодическое автоматическое выполнение своих блокнотов и обновите его содержимое или отправьте его результаты по электронной почте коллегам. Или, используя магические методы, описанные выше, ноутбук может реализовать конвейер данных или задачу ETL для запуска по автоматическому расписанию.
Запланированная информационная панель
Допустим, вам необходимо регулярно отправлять карту фолиума на электронную почту коллеги со всеми землетрясениями за прошедший день.
Для этого вам сначала понадобится набор данных о землетрясениях, который регулярно обновляется (по крайней мере, ежедневно). Есть фид данных, который обновляется каждые 5 минут. Затем вы можете использовать Jupyter для написания кода для загрузки этих данных и создания карты.
Domino позволяет запланировать запуск любого сценария на регулярной основе, и это работает для файлов ipynb, как и для всего остального. Когда он запускает запланированное выполнение batchdemo. ipynb , Domino вычислит записную книжку и обновит свои ячейки самыми новыми результатами.
Соавторы могут посетить страницу, чтобы просмотреть обновленную записную книжку в браузере — без запуска сервера Jupyter. Таким образом, ваш ноутбук превратился в информационную панель, которая всегда актуальна.
Запланированная информационная панель с магией и экспортом в HTML
Еще один шаг — объединение конвейерной обработки магии и преобразование всей записной книжки в HTML-отчет. В следующем примере показано, как вы можете сначала использовать сценарий оболочки для получения веб-страницы (https://www.sfgate.com), которую вы визуализируете в облаке слов с помощью Python. Затем в рамках запланированного запуска он преобразуется в HTML-страницу с результатом запуска. Вы можете настроить запланированные прогоны таким образом, чтобы любые результаты (например, ваша записная книжка, отображаемая в формате HTML) автоматически отправлялись вашим коллегам по электронной почте.
Когда вы закончите свой блокнот со встроенными визуализациями, создайте сценарий оболочки, похожий на:
ipython nbconvert --to html pipedashboard.ipynb
запустить свой блокнот.
Ищете дополнительные возможности для своих ноутбуков Jupyter? См. наше руководство по созданию интерактивных информационных панелей в блокнотах Jupyter.
Обучение криминалистическому анализу смартфонов | Курс криминалистики мобильных устройств
FOR585: Углубленный криминалистический анализ смартфона поможет вам понять:
Где находятся важные улики на смартфоне
Как данные попали на смартфон
Как восстановить удаленные данные мобильного устройства, которые не были обнаружены криминалистическими инструментами
Как расшифровывать улики, хранящиеся в сторонних приложениях
Как обнаруживать, декомпилировать и анализировать вредоносное и шпионское ПО для мобильных устройств
Усовершенствованная терминология сбора данных и методы получения доступа к данным на смартфонах
Как обращаться с заблокированными или зашифрованными устройствами, приложениями и контейнерами
Как правильно проверять базы данных, содержащие артефакты приложений и мобильных устройств
Как создавать, проверять и проверять инструменты на соответствие реальным наборам данных
СОБСТВЕННЫЙ.
НЕ СОВЕРШАЙТЕ ОШИБКУ, СООБЩАЯ СИСТЕМНЫЕ ДОКАЗАТЕЛЬСТВА, ПРЕДЛОЖЕНИЯ ИЛИ АССОЦИАЦИИ ПРИЛОЖЕНИЙ КАК ДЕЙСТВИЯ ПОЛЬЗОВАТЕЛЯ.
ПОРА СТАТЬ УМНЕЕ!
Смартфон падает на ваш стол, и вам нужно определить, был ли пользователь в определенном месте в определенную дату и время. Вы полагаетесь на свои криминалистические инструменты для создания дампа и анализа данных. Инструменты показывают информацию о местоположении, связывающую устройство с интересующим местом. Готовы ли вы доказать, что пользователь был в этом месте? Знаете ли вы, как сделать это дальше, чтобы поместить объект в интересующее место в эту конкретную дату и время? Действуйте осторожно, потому что пользователь может не сделать того, что показывают инструменты!
Мобильные устройства часто являются ключевым фактором в уголовных делах, вторжениях, краже IP, угрозах безопасности, реконструкции происшествий и многом другом. Понимание того, как правильно использовать данные с устройства, может решить вашу проблему и ваше будущее в качестве эксперта. FOR585: Углубленный судебный анализ смартфона научит вас этим навыкам.
Каждый раз, когда смартфон «думает» или делает предложение, данные сохраняются. Легко запутаться в том, что сообщают судебные инструменты. Криминалистическая экспертиза смартфона — это больше, чем нажатие кнопки «найти улики» и получение ответов. Ваша команда не может позволить себе полагаться исключительно на инструменты в вашей лаборатории. Вы должны понимать, как правильно их использовать, чтобы вести расследование, вместо того, чтобы просто позволить инструменту сообщать о том, что, по его мнению, произошло на устройстве. Коммерческие инструменты не могут разобрать все со смартфонов и понять, как данные были помещены на устройство. Изучение и интерпретация данных — это ваша работа, и этот курс предоставит вам и вашей организации возможность с уверенностью находить и извлекать правильные доказательства со смартфонов.
Этот углубленный курс судебной экспертизы смартфонов дает экспертам и следователям продвинутые навыки обнаружения, декодирования, расшифровки и правильной интерпретации улик, извлеченных с мобильных устройств. Курс включает 31 практическую лабораторную работу, криминалистическую задачу и бонусный кейс, который позволяет учащимся анализировать различные наборы данных с интеллектуальных устройств и использовать лучшие криминалистические инструменты, методы и пользовательские сценарии, чтобы узнать, как данные смартфона скрываются и могут быть скрыты. могут быть легко неверно истолкованы криминалистическими инструментами. Каждая лабораторная работа предназначена для того, чтобы преподать вам урок, который можно применить к другим смартфонам. Вы получите опыт работы с различными форматами данных на разных платформах и узнаете, как данные хранятся и кодируются на смарт-устройствах каждого типа. Лаборатории откроют вам глаза на то, что вы упускаете, полагаясь на 100% на свои инструменты криминалистики.
FOR585 постоянно обновляется, чтобы быть в курсе новейших операционных систем для смартфонов, сторонних приложений, недополученных данных, методов извлечения (джейлбрейк и рут), вредоносных программ и шифрования. Этот интенсивный шестидневный курс предлагает самые уникальные и современные инструкции на планете, и он вооружит вас криминалистическими знаниями о мобильных устройствах, которые вы сможете сразу же применить к делам, над которыми вы работаете, в день окончания курса.
Технологии смартфонов постоянно меняются, и большинство специалистов-криминалистов не знакомы с форматами данных для каждой технологии. Поднимите свои навыки на новый уровень: пора хорошим парням стать умнее, а плохим парням понять, что их активность в смартфонах может и будет использоваться против них!
ДАННЫЕ СМАРТФОНА НЕ МОГУТ СКРЫВАТЬСЯ ВЕЧНО — ПРИШЛО ВРЕМЯ ПЕРЕХВАТИТЬ МОБИЛЬНОЕ УСТРОЙСТВО!
Вы сможете
Выбрать наиболее эффективные криминалистические инструменты, методы и процедуры для эффективного анализа данных со смартфонов кто с кем общался, где и когда)
Понять, как файловые системы смартфонов хранят данные, чем они отличаются и как доказательства будут храниться на каждом устройстве
Интерпретация файловых систем на смартфонах и поиск информации, обычно недоступной для пользователей.
Определите, как улики попали на мобильное устройство. критическая ошибка сообщения о ложных доказательствах, полученных с помощью инструментов
Внедрение методов ручного декодирования для восстановления удаленных данных, хранящихся на смартфонах и мобильных устройствах
Привязка пользователя к смартфону в определенную дату/время и в различных местах
Восстановление скрытых или запутанных сообщений от приложений на смартфонах
Расшифровка или декодирование данных приложений, которые не анализируются вашими инструментами судебной экспертизы
Обнаружение смартфонов, скомпрометированных вредоносными и шпионскими программами, с использованием методов судебной экспертизы
Управление шифрованием на смартфонах и обход, взлом и/или декодирование кодов блокировки, восстановленных вручную со смартфонов, включая взлом файлов резервных копий iOS, которые были зашифрованы с помощью iTunes
Понять, как данные хранятся на компонентах смартфона (SD-карты) и как зашифрованные данные могут быть проверены с помощью смартфона
Извлечение и использование информации со смартфонов и их компонентов, включая Android, iOS, BlackBerry 10, Windows Phone, китайский стук -offs и SD-карты (доступны дополнительные лабораторные работы, посвященные BlackBerry, резервному копированию BlackBerry, Nokia [Symbian] и декодированию SIM-карт)
Проведение расширенных криминалистических исследований структур данных на смартфонах путем более глубокого изучения базовых структур данных, которые недоступны многим инструментам. интерпретировать
Анализ баз данных SQLite и дампов необработанных данных со смартфонов для восстановления удаленной информации
Применение передовых методов извлечения данных на смартфонах для проверки результатов и извлечения отсутствующих или удаленных данных
Применение знаний, полученных в ходе курса, для проведения полного дня краеугольное мероприятие для смартфонов с участием нескольких устройств, смоделированное на основе реальных исследований смартфонов
FOR585 Темы курса
Вредоносное и шпионское ПО на смартфонах
Мобильные устройства в случаях реагирования на инциденты
Определение наличия вредоносных или шпионских программ
Обработка изоляции вредоносных программ
Декомпиляция вредоносных программ для проведения углубленного анализа
Определение того, что было скомпрометировано
9015 Анализ смартфонов и их компоненты
Android
iOS
SD-карты
Резервное копирование и хранение в облаке
Данные, синхронизированные с облаком — Google и др.
Углубленная криминалистическая экспертиза файловых систем и структур данных смартфонов
Восстановление удаленной информации со смартфонов
Углубленное исследование баз данных SQLite
Поиск следов действий пользователей на смартфонах
Восстановление данных из сторонних приложений
Отслеживание онлайн-действий пользователей на смартфонах (например, обмен сообщениями и социальные сети)
Изучение интересующих файлов приложений
Декодирование вручную для восстановления недостающих данных и проверки результатов
Разработка SQL-запросов для анализа интересующих баз данных
Понимание артефактов на основе пользователей и смартфонов
Использование журналов использования системы и приложений для помещения устройства в положение и состояние, когда приложения использовались
Выявление устройств, которые намеренно были изменены — удаление, стирание и сокрытие приложений
Подробное использование и возможности лучших инструментов судебной экспертизы для смартфонов
Использование ваших инструментов способами, о которых вы не знали
Использование пользовательских сценариев для анализа удаленных данных
Использование сценариев для проведения криминалистического анализа
Вырезание данных
Разработка пользовательских запросов SQL
Проведение физического и логического поиска по ключевым словам Проверка инструмента на основе надежных наборов данных
Использование информации о геолокации со смартфонов и компонентов смартфонов для размещения подозреваемого в месте, где был создан артефакт
Handling Locked and Encrypted Devices
Extracting evidence from locked smartphones
Bypassing encryption (kernel and application level)
Cracking passcodes
Decrypting backups of smartphones
Decrypting third-party application files
Examining encrypted data from SD-карты
Рекомендации по реагированию на инциденты для смартфонов
Как ваши действия могут изменить устройство
Как обращаться с горячими и холодными устройствами
Как предотвратить удаленный доступ к устройству
Как привязать пользователя или действие к устройству в определенное время
Как управление мобильным устройством может не только навредить, но и помочь вам
Практическое обучение
FOR585 предлагает 31 практическое лабораторное занятие и заключительную криминалистическую задачу, чтобы учащиеся не только усвоили материал, но и могли применять методы ручного восстановления данных. Некоторые лабораторные работы позволяют вам «выбрать свое собственное приключение», чтобы учащиеся, которым может потребоваться сосредоточиться на конкретном устройстве, могли выбирать соответствующие лабораторные работы и возвращаться к другим, когда позволяет время. Лабораторные работы охватывают следующие темы:
Вредоносное и шпионское ПО — Два лабораторных занятия предназначены для обучения студентов выявлению, ручной декомпиляции и анализу вредоносных программ, восстановленных с устройства Android. Используемые здесь процессы выходят за рамки коммерческих криминалистических наборов и методов. Бонусные файлы IPA и APK предоставляются для практики. На USB-накопителе доступны две дополнительные бонусные лабораторные работы.
Анализ Android . Четыре лабораторных занятия предназначены для обучения студентов тому, как вручную взламывать заблокированные устройства, вырезать удаленные данные, проверять результаты инструментов, размещать пользователя за артефактом и анализировать файлы сторонних приложений на предмет созданных пользователем данных. обычно не анализируются коммерческими криминалистическими инструментами. Методы с открытым исходным кодом используются и выделяются там, где это возможно. В дополнительном лабораторном занятии студенты узнают, как вручную взламывать коды блокировки с устройств Android. Бонусная лаборатория побуждает студентов вручную взаимодействовать с работающим устройством, чтобы получать соответствующую информацию с помощью бесплатных методов.
Анализ iOS . Пять лабораторных занятий предназначены для обучения студентов ручному вырезанию удаленных данных, проверке результатов инструментов, ручному анализу интересующих списков и баз данных, а также анализу файлов сторонних приложений на наличие данных, созданных пользователями, которые обычно не анализируются. с помощью коммерческих криминалистических инструментов. Кроме того, в лабораторные работы встроены методы «обмана» ваших инструментов для разбора данных из зашифрованных изображений. Бонусная лаборатория побуждает студентов вручную взаимодействовать с работающим устройством, чтобы получать соответствующую информацию с помощью бесплатных методов. На курсе USB есть и другие бонусные лабораторные работы по iOS.
Анализ файлов резервных копий — Три лабораторных занятия предназначены для обучения студентов анализу данных из файлов резервных копий iOS и Android. Эти лабораторные работы заставят студентов анализировать данные из баз данных, списков и данных сторонних приложений. Предоставляется бонусная лаборатория по резервному копированию BlackBerry.
Анализ стертых данных телефона . Это одна из самых сложных лабораторных работ для студентов, так как используемое устройство будет стерто перед приобретением. Студенты смогут протестировать все методы, которым они научились в ходе курса, чтобы увидеть, что действительно можно восстановить с стертого смартфона.
Анализ BlackBerry 10 . Эта всеобъемлющая лабораторная работа дает учащимся возможность привязать внешние носители (SIM-карты) к устройству, понять, как данные вырезаются и анализируются вручную, а также понять, чем приложения BlackBerry 10 отличаются от приложений Android и iOS. Сможете ли вы идентифицировать BlackBerry, на котором запущены приложения для Android? Методы, используемые в этом лабораторном занятии, будут применяться к другим смартфонам, которые содержат SIM-карты и используют сторонние приложения (Android, Windows Phone, Nokia и т. д.)
Анализ поддельных телефонов . Эта лабораторная работа направлена на работу с поддельными устройствами, понимание файловой системы и декодирование данных, не проанализированных коммерческими инструментами.
Анализ сторонних приложений . В этих лабораторных работах учащимся предлагается исследовать сторонние приложения, загруженные с нескольких смартфонов, и вручную анализировать приложения, которые обычно не анализируются коммерческими инструментами.
Разбор баз данных приложений . Эти три лабораторные работы предоставляют учащимся возможность писать SQL-запросы для анализа интересующих таблиц и восстановления вложений, связанных с чатами, удаленными чатами и данными из защищенных приложений чата. Лаборатории заставят студентов копнуть глубже того, что может предложить коммерческий инструмент.
Анализ браузера . Эта лабораторная работа направлена на выявление сходств и различий между артефактами компьютерных и мобильных браузеров. Ваши коммерческие инструменты могут быть хороши для анализа некоторых доказательств, но эта лабораторная работа выявит то, что упущено!
Смартфон Forensic Capstone — Последнее испытание проверяет все, что учащиеся узнали в ходе курса. Он включает в себя несколько смартфонов, используемых в разных местах, включая связь, сторонние приложения, историю Интернета, облачную и сетевую активность, общие данные и многое другое. Упражнение побуждает учащихся копнуть глубже и продемонстрировать то, чему они научились в FOR585, чтобы они могли сразу же применить это в своей работе, когда вернутся на работу.
Предварительные требования
Для прохождения этого курса нет предварительных условий, но базовое понимание структуры файлов и терминологии цифровой судебной экспертизы поможет учащемуся освоить более сложные темы. Предыдущее обучение поставщика в области судебной экспертизы мобильных устройств также полезно, но не обязательно. Мы не обучаем основным методам приобретения знаний в классе, но мы даем инструкции по ним в дополнительных материалах курса. Этот класс посвящен анализу, расширенным методам доступа и пониманию артефактов смартфона.
Что вы получите
Загрузить PDF
Обзор
В центре внимания. данные, полученные с устройства. В этот первый учебный день студенты будут применять свои знания в криминалистической обработке смартфонов, возможностях устройств, методах сбора данных, проверке базы данных SQLite и разработке запросов. Они также получат обзор устройств Android. Мы заканчиваем этот раздел изучением резервных копий Android и облачных данных, связанных с Android и Google. Учащиеся познакомятся с наиболее популярными криминалистическими инструментами, необходимыми для комплексного изучения структур данных смартфонов.
Смартфоны будут представлены и определены, чтобы определить наши ожидания относительно того, что мы можем восстановить с помощью методологий цифровой криминалистики. Мы быстро рассмотрим концепции смартфонов и криминалистические последствия каждого из них. Мы предлагаем подходы к решению распространенных проблем, таких как шифрование, пароли и поврежденные устройства. Учащихся научат методологиям обращения с устройствами в различных состояниях, например, с ГОРЯЧИМ или ХОЛОДНЫМ устройством. Мы обсудим, как обрабатывать и расшифровывать данные на мобильных устройствах с криминалистической точки зрения, а затем изучим тактику восстановления информации, которую не всегда могут извлечь даже инструменты криминалистики.
Судмедэксперты должны понимать концепцию интерпретации и анализа информации на различных смартфонах, а также ограничения существующих методов извлечения данных с этих устройств. Этот день курса наполнен знаниями и охватывает способы решения проблем с шифрованием, компоненты смартфона, дополнительные материалы по неподходящим устройствам (те, которые вы обычно не видите), а также обзор SQLite и простой язык запросов. Мы также познакомим учащихся с Android и методами создания файлов для анализа резервных копий Android.
Рабочая станция SIFT, используемая в классе, была специально загружена набором криминалистических инструментов для смартфонов, которые станут вашим основным набором инструментов и рабочей средой на неделю.
Упражнения
Рабочая станция SIFT: Лабораторная установка
Практические демонстрации и ознакомление с криминалистическими инструментами для смартфонов
Знакомство с Physical Analyzer с извлечением физического устройства Android
Знакомство с AXIOM с извлечением резервной копии iOS
Введение в криминалистику базы данных SQLITE и составление простых запросов SQL
ПРИМЕНЕНИЯ ANDROID BACKUPS
Темы
BONUS Material Руководства
Памятки по смартфонам
Соответствующие официальные документы и руководства
Ремонт мобильных устройств
Бонусная лаборатория: Nokia (Symbian) Forensics
Бонусная лаборатория: Исследование файлов резервных копий BlackBerry
Бонусная лаборатория: Декодирование данных SIM-карты
Бонусная лаборатория: Анализ BlackBerry 10
Бонусная лаборатория: Анализ подделки
org/Question» data-v-9532958a=»»>
Обзор
Focus
Android-смартфоны являются одними из самых распространенных в мире, а это значит, что они обязательно станут частью расследования, которое попадется вам на стол. К сожалению, получить доступ к этим устройствам не так просто, как раньше. Устройства Android содержат значительные объемы данных, которые можно расшифровать и преобразовать в полезную информацию. Однако без оттачивания соответствующих навыков обхода заблокированных Android-устройств и правильной интерпретации данных, хранящихся на них, вы будете не готовы к быстро развивающемуся миру криминалистики смартфонов. Резервные копии Android могут быть созданы для судебного анализа или пользователем. Эксперты по смартфонам должны понимать структуру файлов и способы анализа этих данных. Кроме того, облачные данные Android и Google хранят массу ценной информации. Вы также найдете артефакты Google от пользователей iOS.
Обзор
Судебно-медицинские эксперты должны понимать структуру файловой системы устройств Android и то, как они хранят данные, чтобы извлекать и интерпретировать содержащуюся в них информацию. В этот день курса мы углубимся в структуру файловой системы на устройствах Android и обсудим общие области, содержащие файлы, имеющие доказательную ценность. Охватываются следы действий пользователя на устройствах Android, а также восстановление удаленных данных, находящихся в записях SQLite и файлах необработанных данных.
Во время практических занятий вы будете использовать криминалистические инструменты смартфона для извлечения, декодирования и анализа самой разнообразной информации с устройств Android. Вы будете использовать навыки экзамена по SQLite, полученные в первом разделе курса, для составления запросов для анализа информации, которую коммерческие инструменты не могут поддерживать. Когда ничего не помогает и инструменты не могут извлечь информацию из новых устройств Android, мы будем использовать ADB для ручного взаимодействия и извлечения интересующих данных. Мы продемонстрируем методы извлечения и проверки облачных данных, а затем закончим день анализом физического извлечения данных с устройства Android.
Упражнения
Ручное декодирование и извлечение информации из файловых систем Android и логический сбор физический дамп устройства Android
Использование сценариев и бесплатных инструментов для сортировки больших извлечений данных с устройств Android
Использование ADB для взаимодействия с устройствами Android
Topics
Android Acquisition Considerations
Methods Available
Physical
File System
Logical/Backup
Understanding the Limitations of Extraction Options
Understanding Traces Left Behind
Android Структуры файловой системы
Определение макета структуры данных
Физическая
Файловая система
Logical/Backup
Live acquisition methodsp
Data Storage Formats
Parsing and Carving Data
Physical and Logical Keyword Searches
Handling Locked Android Devices
Security Options on Android
Methods for Bypassing Заблокированные устройства Android
Практические советы по доступу к заблокированным устройствам Android
Расположение доказательств Android
Первичные местоположения доказательств
Уникальное восстановление файлов
Файлы базы данных SQLITE
Группирование
. на смартфонах Android
SMS/MMS
Звонки, контакты и календарь
Электронная почта и просмотр веб-страниц
Информация о местоположении
Third-Party Applications
Application Usage
System Logs of Interest
Salvaging Deleted SQLite Records
Salvaging Deleted Data from Raw Images on Android Devices
Putting the pieces together for Android artifacts
Bonus Materials
Памятки для смартфонов
Методы сбора данных для Android
Соответствующие технические документы и руководства
Практическое занятие по извлечению данных с помощью ADB с устройства Android
Дополнительная лаборатория: Взлом замков Android
Обзор
Focus
Устройства Apple iOS содержат значительные объемы данных (включая удаленные записи), которые можно расшифровать и интерпретировать в полезную информацию. Для обхода заблокированных устройств iOS и правильной интерпретации данных необходимы навыки правильной обработки и синтаксического анализа. В этом разделе курса будут рассмотрены методы извлечения с использованием джейлбрейков и эксплойтов. Без инструкций для iOS вы не будете готовы иметь дело с устройством iOS, которое, вероятно, станет основным компонентом судебного расследования.
Обзор
Этот раздел посвящен устройствам iOS. Специалисты по цифровой судебной экспертизе должны понимать структуру файловой системы и структуру данных устройств Apple iOS, чтобы извлекать и интерпретировать содержащуюся в них информацию. Чтобы узнать, как это сделать, мы углубимся в структуру файловой системы на устройствах iOS и обсудим общие области, содержащие файлы, имеющие доказательную ценность. Мы подробно рассмотрим шифрование, дешифрование, анализ файлов и отслеживание действий пользователя.
Во время практических занятий учащиеся будут использовать инструменты и методы судебной экспертизы смартфонов для извлечения и анализа широкого спектра информации с устройств iOS. Студенты также должны будут вручную декодировать данные, которые были удалены или не могут быть восстановлены, с помощью инструментов судебной экспертизы смартфонов и сценариев, поддерживающих криминалистическую экспертизу устройств iOS.
Упражнения
Ручное декодирование и извлечение информации из сбора файловой системы iOS
Извлечение информации из полной проверки файловой системы извлечения m8
Использование сценариев сообщества и бесплатных инструментов для быстрого анализа и определения времени полного извлечения файловой системы с устройства iOS
Ручной анализ сторонних приложений и проведение глубокого декодирования и восстановления действий пользователя на устройствах iOS
Позиционирование пользователя позади артефакт, основанный на информации о местоположении и других трассировках, обнаруженных в дампах файловой системы с устройств iOS0370
iOS Architecture and Components
NAND Flash Memory in iOS Devices
iOS File Systems
iOS Versions
iOS Encryption
iOS Exploits and Jailbreaks
Interacting live on jailbroken devices
iOS File System Structures
Определение схемы структуры данных
Физическая
Полная файловая система
Файловая система
Логическая
Data Storage Formats
Parsing and Carving Data
Physical and Logical Keyword Searches
iOS Evidentiary Locations
Primary Evidentiary Locations
Unique File Recovery
Parsing SQLite Database Files
Manual Decoding of iOS Data
Работа с заблокированными устройствами iOS
Параметры безопасности на iOS
Текущие проблемы с приобретением
Демонстрация обхода системы безопасности iOS
Практические советы по доступу к заблокированным устройствам iOS
Следы действий пользователя на устройствах iOS
Как приложения iOS хранят данные
Экспертиза данных Apple Watch на устройствах iOS
SMS/MMS
Звонки, контакты и календарь
Электронная почта и просмотр веб-страниц
Информация о местоположении
Сторонние приложения
Application Usage Logs
System Files of Interest
Salvaging Deleted SQLite Records
Salvaging Deleted Data from Raw Images
Putting the pieces together for iOS artifacts
Bonus Materials
Smartphone Cheat Sheets
Практическое занятие по извлечению данных с устройства iOS с использованием libimobiledevice
Ручное декодирование и интерпретация данных из извлечений файловой системы iOS
Ручное изучение старого дампа файловой системы с устройства iOS
Методы сбора данных iOS
Соответствующие технические документы и руководства
org/Question» data-v-9532958a=»»>
Обзор
на жестких дисках. Пользователи создают резервные копии, и мы часто обнаруживаем, что лучшие данные можно получить, создав резервную копию iOS для судебного расследования. В этом разделе будут рассмотрены методологии извлечения резервных копий и облачных данных, а также анализ артефактов для каждого из них. Вредоносное ПО поражает множество смартфонов. Мы рассмотрим различные типы вредоносных программ, как они существуют на смартфонах, как их идентифицировать и анализировать. Большинство коммерческих инструментов для смартфонов помогают выявлять вредоносное ПО, но ни одно из них не позволит вам удалить вредоносное ПО до уровня, который мы рассматриваем в этом классе. Только в этот день мы проведем пять лабораторных работ! День заканчивается тем, что учащиеся бросают себе вызов, используя инструменты и методы, изученные в течение недели, для восстановления пользовательских данных из преднамеренно измененных данных смартфона (удаление, стирание и сокрытие данных).
Обзор
Файлы резервных копий iOS обычно являются частью цифровых криминалистических расследований. Этот учебный день дает студентам глубокое понимание содержимого файлов резервных копий, ручного декодирования, а также разбора и взлома зашифрованных образов файлов резервных копий. Методы, изученные в предыдущий день курса, применяются в начале этого раздела, поскольку файлы резервных копий iOS по сути являются извлечениями файловой системы. Сегодня экспертам приходится обращать внимание на наличие вредоносных программ на смартфонах. Часто единственными вопросами, касающимися расследования, могут быть вопросы о том, был ли скомпрометирован данный смартфон, как и что можно сделать, чтобы это исправить. Экспертам важно понимать вредоносное ПО и то, как определить его наличие на смартфоне.
Во время практических занятий учащиеся будут использовать инструменты судебной экспертизы смартфонов и другие методы для извлечения и анализа широкого спектра информации из резервных копий iOS, устройств Android, содержащих мобильные вредоносные программы, и устройств, которыми пользователь намеренно манипулировал. Учащиеся должны будут вручную декодировать данные, которые были стерты, зашифрованы или удалены или которые невозможно восстановить с помощью инструментов судебной экспертизы смартфонов.
Упражнения
Расширенное криминалистическое упражнение по файлу резервной копии, включающее файл резервной копии iOS 13, который требует ручного декодирования и вырезания для восстановления данных, пропущенных инструментами судебной экспертизы смартфона
Проверка базы данных iOS 14, требующая ручного труда для интерпретации данных, не поддерживаемых коммерческими инструментальными средствами устройство, на котором приложение было изменено и удалено
Различные типы распространенных вредоносных программ
Общие местоположения на смартфонах
Как определить компрометацию
Как восстановиться после компрометации
Что было затронуто?
Как изолировать?
Как проанализировать с использованием методологий обратного инженерия
Обнаружение разрушения доказательств
Различные типы разрушения
, когда это произошло, когда возникало разрушение
. 0154
Bonus Materials
Smartphone Cheat Sheets
Malware/Spyware Cheat Sheet
APK Decompiling Cheat Sheet
Backup File Acquisition Methods
Relevant White Papers and Guides
Overview
Focus
Этот учебный день начинается со сторонних приложений для всех смартфонов и предназначен для обучения студентов тому, как использовать данные сторонних приложений и файлы настроек для поддержки расследования. Остальная часть дня посвящена безопасным чат-приложениям, восстановлению удаленных данных приложений и вложений, артефактам мобильного браузера и криминалистической экспертизе поддельных телефонов. Навыки, полученные в этом разделе, предоставят учащимся передовые методы декодирования данных, хранящихся в сторонних приложениях, на всех смартфонах. Мы покажем вам, чего не хватает коммерческим инструментам, и научим, как восстановить эти артефакты самостоятельно.
Обзор
Во время практических занятий учащиеся будут использовать криминалистические инструменты смартфона для извлечения и анализа интересующих файлов сторонних приложений, а затем вручную находить и восстанавливать пропущенные данные. Студенты должны будут вручную декодировать данные, которые были удалены или не могут быть восстановлены, с помощью инструментов судебной экспертизы для смартфонов и пользовательских запросов SQLite, которые они пишут сами. Практические упражнения будут представлять собой компиляцию всего, что студенты узнали до сих пор в ходе курса, и потребуют ручного декодирования данных сторонних приложений с нескольких смартфонов. Когда этот раздел закончится, вы докажете, что у вас есть набор навыков для восстановления артефактов, которые не могут восстановить инструменты криминалистики.
Упражнения
Расширенное упражнение с использованием сторонних приложений, требующее от студентов использования навыков, полученных в течение первых четырех дней курса, для ручного декодирования сообщений, хранящихся в файлах сторонних приложений на нескольких смартфонах
Упражнение по анализу браузера, требующее от студентов ручного изучения действия сторонних браузеров, которые коммерческие инструменты не могут проанализировать
Восстановление вложений с помощью упражнения, требующего от учащихся написания более сложных SQL-запросов для восстановления вложений со смартфона
Восстановление удаленных данных из чат-приложений с помощью упражнения, требующего от учащихся разработки методов поиска и восстановления удаленного контента в течении курса. Работая в небольших группах, учащиеся изучат три смартфона и решат сценарий, связанный с реальным судебным расследованием смартфонов. Каждая группа самостоятельно проанализирует три смартфона, расшифрует данные вручную, ответит на конкретные вопросы, сформирует гипотезу исследования, подготовит отчет и представит результаты.
Обзор
Это завершающее упражнение, требующее от групп учащихся представить свои выводы классу, проверит понимание учащимися методов, которым обучают в течение недели. Студенты OnDemand имеют возможность виртуально представить преподавателю, чтобы выиграть монету класса. Выводы должны быть техническими и включать этапы ручного восстановления и мыслительный процесс, стоящий за этапами расследования. Также ожидается краткое изложение выводов.
Упражнения
Каждой группе будет предложено ответить на ключевые вопросы, перечисленные ниже, во время завершающего упражнения, точно так же, как и во время реального цифрового расследования.
Кроме того, учащиеся должны будут составить отчет о судебной экспертизе. Только лучшая команда выиграет судебно-медицинскую экспертизу.
Дополнительные материалы
Кейс на вынос, включающий другой сценарий с тремя новыми смартфонами
Вопросы к кейсу
Ответы на вопросы по домашнему делу
Важно! Принесите свою собственную систему, настроенную в соответствии с этими инструкциями!
Для полноценного участия в этом курсе требуется правильно настроенная система. Если вы внимательно не прочитаете и не будете следовать этим инструкциям, вы, скорее всего, покинете класс неудовлетворенными, потому что вы не сможете участвовать в практических упражнениях, которые необходимы для этого курса. Поэтому мы настоятельно рекомендуем вам прибыть с системой, отвечающей всем требованиям, предъявляемым к курсу.
Это здравый смысл, но мы все равно скажем: сделайте резервную копию вашей системы перед уроком. А еще лучше, чтобы в системе не хранились конфиденциальные данные. SANS не может нести ответственность за вашу систему или данные.
Обязательные FOR585 Требования к системному оборудованию
Обязательная для конфигурации хоста и требования к программному обеспечению
. операционную систему перед занятием, чтобы убедиться, что у вас установлены нужные драйверы и исправления для использования новейших устройств USB 3.0.
ПОЖАЛУЙСТА, УСТАНОВИТЕ СЛЕДУЮЩЕЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ДО ЗАНЯТИЯ
Перед началом занятий загрузите и установите последнюю версию VMWare Workstation, VMWare Fusion и VMware на свою систему. Если у вас нет лицензионной копии VMware Workstation или Fusion, вы можете загрузить бесплатную 30-дневную пробную копию с сайта VMware. VMware отправит вам серийный номер с ограниченным сроком действия, если вы зарегистрируетесь для получения пробной версии на их веб-сайте.
Загрузите и установите 7Zip (для хостов Windows) или Keka (macOS).
Материалы вашего курса теперь будут доставлены через загрузку. Медиафайлы для занятий могут быть большими, некоторые в диапазоне 40–50 ГБ. Вы должны дать достаточно времени для завершения загрузки. Интернет-соединения и скорость сильно различаются и зависят от множества различных факторов. Поэтому невозможно дать оценку времени, которое потребуется для загрузки ваших материалов. Пожалуйста, начните загрузку мультимедиа курса, как только получите ссылку. Материалы для курса понадобятся вам сразу же, в первый день занятий. Ожидание ночи перед началом урока может привести к сбою загрузки.
Компания SANS начала предоставлять печатные материалы в формате PDF. Кроме того, некоторые классы используют электронную рабочую тетрадь в дополнение к PDF-файлам. Количество классов, использующих электронные книги, будет быстро расти. Мы обнаружили, что в этой новой среде второй монитор и/или планшетный компьютер могут быть полезны, так как материалы занятия остаются видимыми, пока преподаватель ведет презентацию или пока вы работаете над лабораторными упражнениями.
Стандарты кодирования для Jupyter Notebook
Jupyter Notebook стал невероятно популярен среди специалистов по данным и обычных пользователей Python и R. Несмотря на то, что среда Jupyter является либеральной и позволяет вам проявлять творческий подход, вам, вашей команде и вашим читателям будет полезно, если вы определяете структуру и следуете ей. Основываясь на своем опыте в качестве разработчика-евангелиста и автора общедоступных блокнотов за последние три года, я делюсь в этой статье шаблонами, которые я рекомендую для написания примеров по науке о данных с использованием Jupyter Notebook.
Это хороший пример названия и повествования для блокнота.
Щедро используйте заголовки и уценки
Начните блокнот с уровня заголовков 1 и дайте ему название. Далее следует описание, объясняющее, для чего предназначена записная книжка, откуда берутся данные и чего может ожидать пользователь.
Разбейте блокнот на более мелкие части и используйте уровни заголовков 2, 3, 4 и т. д. для иерархии тем и подтем. В идеале записная книжка должна иметь только один уровень заголовков 1, под которым вложены несколько уровней заголовков 2, 3, 4 и т. д. Чтобы улучшить свой блокнот, вставляйте изображения и используйте другой типографику, например полужирный или курсив, или вставляйте код, чтобы оживить текст.
Пример, показывающий, как уравнения LaTeX отображаются в Jupyter Notebook.
Использование LaTeX для формул
LaTeX — это система подготовки документов, использующая макроязык TeX. Шпаргалка с веб-сайта Нью-Йоркского университета связана с онлайн-версией этой статьи. Вставьте уравнения LaTeX в строку с двумя знаками доллара $…$.
Разбивайте более длинные сегменты кода на несколько ячеек
Старайтесь, чтобы ячейки кода были как можно короче. Разбейте их, добавив между ними ячейки уценки и пояснительный текст. Ячейка для одной строки кода слишком коротка. Ячейка с более чем 15 строками кода слишком длинная.
Plot Profusely
Matplotlib, библиотека двухмерных графиков на Python, великолепна, но ознакомьтесь с библиотеками для построения графиков более высокого уровня, такими как Seaborn Pandas. DataFrame.plot() , прежде чем остановиться на Matplotlib. Используйте plt.tight_layout() для авторазмера ваших графиков, чтобы они соответствовали записной книжке. Используйте подграфики, когда вы хотите показать сетку графиков. И, наконец, убедитесь, что ваши графики имеют легенду, заголовок, имена осей и различимые символы.
Стандарты кодирования для фрагментов Python
В именах переменных и функций используйте знаки подчеркивания для разделения слов — другими словами, змея_имя_ваших_переменных — вместо разделения слов регистром или CamelCasingYourVariables. Исключением являются имена классов, которые должны использовать верблюжий регистр и начинаться с заглавной буквы.
Делайте все импорты в верхней части ноутбука. Таким образом, читатель знает, какие библиотеки используются, и может убедиться, что их среда готова.
Назовите переменные так, чтобы они не затирали встроенные. Например, назовите объект карты map1 и map2 вместо map, что скроет встроенные 9Функция 1237 map() . Не называйте переменные как dict или list, это скроет встроенные структуры данных с теми же именами.
Для повышения производительности используйте Spatially Enabled DataFrame (доступно, начиная с версии 1.5 ArcGIS API for Python) вместо объектов SpatialDataFrame.
Используйте круглые числа для целей отображения
Быстро округляйте свои кадры данных во время отображения, вызывая метод DataFrame_obj .round() . Например: usa_house_scaled.describe().round(3) будет отображать числовые столбцы в вашем DataFrame, округленные до трех десятичных цифр.
Подробно рассказывайте о необычных библиотеках
Как правило, рекомендуется импортировать все зависимости в начале сценария. Однако в среде записной книжки вы можете предпочесть импортировать их по мере необходимости, чтобы лучше объяснить свою работу. Это особенно верно, если вы импортируете много зависимостей на уровне функций. Если вы используете библиотеку, которая не входит в базовую комплектацию Anaconda, пользователь должен выполнить шаги установки и перезапустить блокнот. Сделайте это явным в начале блокнота.
Мастер уценки, чтобы обогатить ваши записные книжки богатой типографикой и мультимедиа.
Структура вашей тетради по науке о данных
В общем и целом, используйте заголовки для структурирования своей тетради, как если бы вы использовали статью для научного журнала.
Заголовок 1: Название: Накройте описательную часть или реферат и включите оглавление.
Заголовок 2: Получение данных — Импортируйте библиотеки, найдите и получите необходимые наборы данных.
Заголовок 2: Исследовательский анализ данных:
Широко используйте карты и диаграммы, чтобы показать различные аспекты данных.
Заголовок 2: Разработка функций
Используйте pandas и другие библиотеки для подготовки данных для обучения. После каждого значительного преобразования покажите предварительный просмотр ваших данных, распечатав первые три или пять записей вашего DataFrame.
Заголовок 2: Анализ
Выполнение анализа, построение и обучение моделей.
Раздел 3: Оценка
Оцените модель и отметьте, выполняются ли допущения, используя как диаграммы, так и метрики. Делайте прогнозы, оценивайте результаты, используя как диаграммы, так и метрики. Используйте более одной метрики для оценки.
Заголовок 2: Действия по анализу
Сохранение результатов путем записи на диск или публикации в Интернете. Объясните с помощью карт и диаграмм, если это применимо. Если вы создали модель прогнозирования, опубликуйте ее как веб-инструмент (REST API). Если вы построили объяснительную записную книжку, опубликуйте ее в виде статьи или отчета.
Заголовок 2: Заключение
Подведите итоги своей работы, начав с формулировки проблемы, перейдя к подходу, которому вы следовали, и описав полученные результаты.
Об авторе
Атма Мани
Атма Мани — ведущий инженер по ArcGIS API для Python в Esri. Он имеет более чем 11-летний опыт работы в различных областях геопространственной индустрии, начиная от расширенного дистанционного зондирования и заканчивая ГИС-моделированием и разработкой программного обеспечения. Его интересы охватывают науку о данных, аналитику и все, что связано с геопространственными данными. Он работал в правительстве и научных кругах, а также в частных компаниях. Ему нравится общаться с пользователями из этих сообществ, чтобы понимать последние тенденции и применять их в своей работе в Esri, переводя их в требования и цели развития. Он получил степень бакалавра инженерных наук по специальности геоинформатика в Инженерном колледже Гуинди в Индии и степень магистра географии в Университете Северной Айовы.
Связанный контент:
Slender Means
(Предупреждение: назревает невежественная тирада)
Как и все, кто когда-либо его использовал, я люблю IPython
ноутбук. Это не только потрясающе продуктивная среда для работы
в, это также самое мощное оружие в проповеднике Питона.
арсенал (сосать его, Matlab).
Я также думаю, что нетрудно представить мир, в котором научные статьи
все просто грамотные программы. И блокнот, наверное, один из
лучшие инструменты для грамотного программирования на любом языке. интеграция уценки и LaTeX/MathJax в блокнот просто фантастическая.
Но у него есть одна слабость как грамотного инструмента программирования.
типографика по умолчанию безобразна как грех.
Есть несколько проблем, но две основные легко устранимы.
Длинные строки
Самая большая проблема заключается в том, что текст и ячейки ввода расширяются до 100%
ширины окна. Большинство людей держат окна своих браузеров открытыми шире
чем удобная ширина для чтения, так что в итоге вы получите длинные трудночитаемые
строки текста в ячейках уценки.
А для кода было бы неплохо, чтобы кодовая ячейка вас обескуражила
из длинных очередей. Ячейки переменной ширины — нет. Я 80 символов
анальный запоминающийся, и даже я с трудом понимаю в блокноте
когда строка слишком длинная.
Когда вы пишете сценарий в текстовом редакторе, появляется много предыдущего кода
в видимом окне, чтобы ваш глаз почувствовал «правое поле»
кода. (Не говоря уже о том, что многие редакторы укажут 80- или
любой столбец символов, чтобы вы точно знали, когда остановиться). Но в
записной книжки ваш код обычно разбивается на более мелкие блоки и
эти блоки чередуются с выходными и другими ячейками. Это трудно, чтобы
получить визуальное представление о правильном поле.
Уродливые шрифты
Ячейки с текстом и уценкой обычно отображаются шрифтом Helvetica или Arial.
Helvetica — это, конечно, прекрасный шрифт, но он не совсем подходит для
абзацы текста (сколько книг, журналов, газет или академических
Вы видите статьи с текстом, набранным шрифтом Helvetica?). И в сочетании
из-за небольшого размера и длинных строк читать трудно и просто
уродливый. Я не думаю, что мне нужно что-то говорить об Arial.
То, как я использую блокнот — с ячейками уценки, используемыми для длинных отрезков
пояснительного текста и интерпретации результатов — лучше иметь
текстовые ячейки отображаются шрифтом с засечками. Таким образом, он выделяется из кода
и выходных ячеек больше. Шрифты с засечками также имеют более характерный курсив,
и лучше интегрируйте с математикой LaTeX/MathJax.
Ячейки кода и выходные ячейки интерпретатора отображаются в любом виде по умолчанию
моноширинный шрифт есть. Обычно это Courier или Courier New. Это
хорошо, но на самом деле, это 21 век — мы можем сделать намного лучше.
Обновление: еще одна вещь
Я понимаю, что сделал еще одно изменение, которое считаю важным.
по умолчанию упорядоченный список в записной книжке использует римские цифры (I, II, III,
…). Вместо этого я почти всегда хочу использовать арабские цифры (1, 2, 3, …). Мы
можно изменить это в файле renderedhtml.css с
.rendered_html ol {list-style:decimal; поле: 1em 2em;}
(Также ознакомьтесь с комментариями о других и, как правило, лучших способах сделать
изменения.) Вы также можете изменить подуровни ol ol , ol ol и т. д.
В идеале хотелось бы иметь вложенные числа 1.1, 1.1.1, но это не
просто, поэтому я не реализовал это. Если у кого-то есть советы, я бы
взволнован, чтобы услышать их.
Исправление (по крайней мере локально)
(Предупреждение: я не знаю, что делаю. Не вносите какие-либо из этих изменений,
или любые другие, без предварительного резервного копирования файлов.)
( Обновление : у Матиаса Буссонье есть информативное сообщение
показывая правильный способ внесения этих изменений. Если вы вносите изменения в CSS
Описываю ниже, делайте так, как он советует, а не через файлы, которые я
описание здесь.)
Блокнот обслуживается через браузер, поэтому его интерфейс в основном
только HTML, Javascript и CSS. Типографика и внешний вид
Блокнот почти полностью управляется файлами CSS, расположенными там, где находится IPython.
хранится в вашей системе. Это будет отличаться в зависимости от вашей ОС и вашего Python.
распределение. На моем Mac с дистрибутивом AnacondaCE
таблицы стилей расположены
в /Users/cvogel/anaconda/lib/python2.7/site-packages/IPython/frontend/html/notebook/static . Там есть несколько подпапок, в том числе /css и /кодовое зеркало . Вы также можете взглянуть на файлы таблиц стилей,
запустив блокнот и используя инспектор вашего браузера. Если твой
браузер (например, Chrome) позволяет редактировать таблицы стилей на лету в
инспектор, вы можете относительно безопасно опробовать изменения.
Вот изменения, которые я внес в свою систему для решения вышеуказанных проблем.
Сначала в папке /css в файле notebook.css
1. Сделать ячейки ввода кода более узкими (код, выходящий за пределы ширины
будет невидим). Я пытаюсь установить это примерно на 80 символов плюс несколько
буфер. Невозможно установить ширину как количество символов в CSS, поэтому
вам, возможно, придется поэкспериментировать, чтобы увидеть, какая экс-ширина работает с вашим шрифтом.
дел.ввод {
ширина: 105ex; /* около 80 символов + буфер */
...
}
2. Исправление уценки/текстовых ячеек. Я вношу изменения в шрифт, ширину и
межстрочный интервал. Я использую Charis SIL, шрифт, основанный на классическом Bitstream.
Устав, и в свободном доступе здесь. Сокращение строк и добавление
небольшое расстояние между строками (обычно от 120 % до 150 % кегля) для удобочитаемости.
div.text_cell {
ширина: 105ex /* вместо 100%, */
...
}
div.text_cell_render {
/*семейство шрифтов: "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;*/
семейство шрифтов: "Charis SIL", с засечками; /* Сделать некодовый текст с засечками. */
высота строки: 145%; /* добавлено для некоторого межстрочного интервала текста. */
ширина: 105ex; /* вместо 'наследовать' для более коротких строк */
...
}
3. Добавьте стили, чтобы задать размеры заголовков.
/* Установить размер заголовков */
div.text_cell_render h2 {
размер шрифта: 18pt;
}
div.text_cell_render h3 {
размер шрифта: 14pt;
}
Затем в подпапке `/codemirror/lib есть файл с именем
кодзеркало.css. Здесь мы можем изменить шрифт, используемый для кода, как для ввода,
и вывод интерпретатора. Я использую Consolas.
.CodeMirror {
семейство шрифтов: Consolas, моноширинный;
}
Очевидно, что эти изменения касаются только блокнотов, которые вы просматриваете на локальном компьютере.
машине, и любой, кто просматривает ваши записные книжки на своей машине или на
nbviewer увидит стиль по умолчанию.
Вот снимки этих изменений до и после:
Исправим (глобально?)
Так мило, правда? И хорошо, что мы можем сделать некоторые
настройки блокнота, но, знаете ли, большое дело.
Я бы сказал, что это на самом деле важнее, чем просто эстетическая обработка.
Блокнот IPython становится универсальным средством для исследования,
сотрудничество, публикация, распространение и репликация в данных
анализ. Как я уже сказал выше, я думаю, что это небезосновательно, что
тетради могут заменить большой класс научных работ. Но делать
что он должен работать так же хорошо, как и все фрагментированные инструменты, которые
исследователи используют в настоящее время. Иначе люди останутся
вставка их кода и результатов в документы Word и Latex. В других
Словом, блокнот должен работать не только как интерактивная среда,
но и как статический документ. Команда IPython понимает это, т.
почему существуют такие инструменты, как nbconvert.
Люди делают удивительные вещи в блокноте. Типографика должна
побуждайте людей читать их, а не просто заменяйте их комментариями.
Инструменты часто тесно связаны с эстетическими характеристиками, которые
являются лишь периферией самого инструмента. ggplot может создавать диаграммы, которые выглядят
как хотите, но когда люди думают о ggplot, они думают о
серый фон и палитра Color Brewer. И пока основная продажа
точка ggplot — это абстракция процесса построения графика, я думаю
это был характерный и привлекательный стиль его графиков, который сделал его
ловить на так успешно. На противоположном конце спектра, когда
люди думают о графике Stata, думают об этом и вздрагивают. А также
Latex будет набирать документы любым сумасшедшим шрифтом, который вы хотите, но в
все думают, Латекс ⇔ Компьютерный модерн (к лучшему или к худшему). Значения дизайна по умолчанию важны: они служат маркетингу и поощряют хорошие
привычки ваших пользователей. Было бы стыдно, если бы люди думали об этом.
записную книжку IPython и рисуйте длинные строки маленьких, разделенных одинарным интервалом
Гельветика Новая.
Это безумно мощный инструмент. Было бы здорово, если бы было красиво
тоже, и эта цель кажется в высшей степени достижимой.
Почему Jupyter является предпочтительным вычислительным блокнотом для специалистов по данным
На вершине хребта Серро-Пахон в чилийских Андах находится строительная площадка, которая в конечном итоге станет Большим синоптическим обзорным телескопом (LSST). Когда он заработает в 2022 году, телескоп будет генерировать терабайты данных каждую ночь, автоматически исследуя южное небо. И для обработки этих данных астрономы будут использовать знакомый и все более популярный инструмент: блокнот Jupyter.
Jupyter — это бесплатный интерактивный веб-инструмент с открытым исходным кодом, известный как вычислительная записная книжка, который исследователи могут использовать для объединения программного кода, результатов вычислений, пояснительного текста и мультимедийных ресурсов в одном документе. Вычислительные ноутбуки существуют уже несколько десятилетий, но популярность Jupyter, в частности, резко возросла за последние пару лет. Этому быстрому освоению способствовало активное сообщество пользователей-разработчиков и переработанная архитектура, которая позволяет ноутбуку говорить на десятках языков программирования — факт, отраженный в его названии, которое, по словам соучредителя Фернандо Переса, было вдохновлено языки программирования Julia (Ju), Python (Py) и R.
Один анализ сайта обмена кодами GitHub насчитал более 2,5 миллионов общедоступных ноутбуков Jupyter в сентябре 2018 года по сравнению с 200 000 или около того в 2015 году. Отчасти, по словам Переса, этот рост связан с улучшениями в веб-программном обеспечении, которое управляет приложениями. такие как Gmail и Google Docs; созревание научного Python и науки о данных; и, особенно, легкость, с которой ноутбуки облегчают доступ к удаленным данным, которые в противном случае было бы нецелесообразно загружать, например, из LSST. «Во многих случаях гораздо проще переместить компьютер к данным, чем данные к компьютеру», — говорит Перес об облачных возможностях Jupyter. «Что эта архитектура помогает сделать, так это сказать: вы говорите мне, где ваши данные, и я дам вам компьютер прямо там».
Для специалистов по данным Jupyter стал стандартом де-факто, говорит Лорена Барба, инженер-механик и авиационный инженер из Университета Джорджа Вашингтона в Вашингтоне, округ Колумбия. Марио Юрич, астроном из Вашингтонского университета в Сиэтле, который координирует команду по управлению данными LSST, говорит: «Я никогда не видел такой быстрой миграции. Это просто потрясающе».
Исследование данных
Вычислительные ноутбуки — это, по сути, лабораторные ноутбуки для научных вычислений. Вместо того, чтобы вставлять, скажем, гели ДНК вместе с лабораторными протоколами, исследователи встраивают код, данные и текст, чтобы документировать свои вычислительные методы. Результатом, по словам одного из создателей Jupyter Брайана Грейнджера из Калифорнийского политехнического государственного университета в Сан-Луис-Обиспо, является «вычислительное повествование» — документ, который позволяет исследователям дополнять свой код и данные анализом, гипотезами и предположениями.
Для специалистов по данным этот формат может стимулировать исследования. Ноутбуки, говорит Барба, представляют собой форму интерактивных вычислений, среду, в которой пользователи выполняют код, видят, что происходит, изменяют и повторяют в своего рода итеративном диалоге между исследователем и данными. Это не единственный форум для таких бесед — IPython, интерактивный интерпретатор Python, на котором был построен предшественник Jupyter, IPython Notebook, является другим. Но блокноты позволяют пользователям документировать эти разговоры, создавая «более прочные связи между темами, теориями, данными и результатами», — говорит Барба.
Исследователи также могут использовать ноутбуки для создания учебных пособий или интерактивных руководств по своему программному обеспечению. Это то, что Маккензи Матис, системный нейробиолог из Гарвардского университета в Кембридже, штат Массачусетс, сделала для DeepLabCut, библиотеки программирования, которую ее команда разработала для исследований в области поведенческой нейробиологии. И они могут использовать тетради для подготовки рукописей или в качестве учебных пособий. Барба, которая внедрила записные книжки в каждый курс, который она преподавала с 2013 года, рассказала в программной речи в 2014 году, что записные книжки позволяют ее ученикам интерактивно взаимодействовать с уроками и усваивать материал таким образом, который не может сравниться с лекциями. «Ноутбуки IPython — это действительно убийственное приложение для обучения информатике в науке и технике», — сказала она.
Говори на моем языке
Блокнот Jupyter состоит из двух компонентов. Пользователи вводят программный код или текст в прямоугольные ячейки на интерфейсной веб-странице. Затем браузер передает этот код внутреннему «ядру», которое запускает код и возвращает результаты (см. наш пример на go.nature.com/2yqq7ak). По подсчетам Переса, было создано более 100 ядер Jupyter, поддерживающих десятки языков программирования. Обычно каждый ноутбук может работать только с одним ядром и одним языком, но существуют обходные пути. Например, один демонстрационный блокнот говорит на Python, Julia, R и Fortran.
Важно отметить, что ядра не обязательно должны находиться на компьютере пользователя. Когда будущие пользователи LSST будут использовать ноутбуки Jupyter для анализа своих данных, код будет работать на суперкомпьютере в Иллинойсе, обеспечивая вычислительную мощность, с которой не может сравниться ни один настольный ПК. Ноутбуки также могут работать в облаке. Например, проект Google Colaboratory предоставляет внешний интерфейс в стиле Google для блокнота Jupyter. Это позволяет пользователям совместно работать и запускать код, который использует облачные ресурсы Google, такие как графические процессоры, и сохранять свои документы на Google Диске.
Новейший вариант Jupyter — JupyterLab, запущенный в качестве бета-версии в январе 2018 года и доступный (как и блокнот Jupyter) либо в виде отдельного пакета, либо в составе бесплатной научно-вычислительной среды Anaconda.
Джейсон Гроут — инженер-программист финансовой компании Bloomberg в Сан-Франциско, Калифорния, и член команды JupyterLab. Он называет JupyterLab «веб-интерфейсом следующего поколения» для блокнота Jupyter, который расширяет привычную метафору блокнота функциями перетаскивания, а также файловыми браузерами, средствами просмотра данных, текстовыми редакторами и командной консолью. В то время как в стандартном блокноте Jupyter каждому блокноту назначается собственное ядро, JupyterLab создает вычислительную среду, позволяющую совместно использовать эти компоненты. Таким образом, пользователь мог просматривать блокнот в одном окне, редактировать нужный файл данных в другом и логировать все выполненные команды в третьем — и все это в едином интерфейсе веб-браузера.
Пользователи также могут настроить JupyterLab в соответствии со своим рабочим процессом. Встроенные средства просмотра существуют, например, для файлов изображений, текста и CSV, но пользователи также могут создавать собственные компоненты. Они могут отображать такие вещи, как выравнивание генома или геопространственные данные. Слушатель курса, который вел Перес, даже создал компонент для отображения данных трехмерной визуализации мозга. «Очевидно, что это полностью [неврологический] предметно-ориентированный инструмент — команда Jupyter не имеет права писать такие вещи. Но мы обеспечиваем правильные стандарты, и тогда это сообщество через 24 часа может вернуться и написать их», — говорит он.
Два дополнительных инструмента повысили удобство использования Jupyter. Одним из них является JupyterHub, служба, которая позволяет учреждениям предоставлять ноутбуки Jupyter большому количеству пользователей. ИТ-команда Калифорнийского университета в Беркли, где Перес является преподавателем, развернула один такой центр, который Перес использует для обеспечения того, чтобы все студенты его курса по науке о данных имели одинаковые вычислительные среды. «Мы не можем управлять ИТ-поддержкой для 800 студентов, помогая им устранять причины, по которым установка на их ноутбуках не работает; это просто невозможно», — говорит он.
Другой разработкой является Binder, служба с открытым исходным кодом, которая позволяет пользователям использовать блокноты Jupyter на GitHub в веб-браузере без необходимости установки программного обеспечения или каких-либо библиотек программирования. Пользователи также могут запускать блокноты Jupyter в облаке Google, вставляя https://colab.research.google.com/github перед URL-адресом блокнота в GitHub или используя коммерческий сервис Code Ocean. В сентябре Code Ocean представила новый пользовательский интерфейс для своей облачной службы совместного использования и выполнения кода, также основанной на Jupyter.
Замеченные проблемы
Такие инструменты способствуют воспроизводимости вычислений за счет упрощения повторного использования кода. Но пользователям по-прежнему необходимо знать, как правильно пользоваться блокнотами.
Джоэл Грус, инженер-исследователь из Института искусственного интеллекта Аллена в Сиэтле, штат Вашингтон, выступил с докладом под названием «Мне не нравятся ноутбуки» на конференции разработчиков Jupyter в начале этого года в Нью-Йорке. Он говорит, что видел, как программисты расстраивались, когда ноутбуки работали не так, как ожидалось, обычно из-за того, что они непреднамеренно запускали ячейки кода не по порядку. По его словам, блокноты Jupyter также поощряют плохую практику кодирования, поскольку затрудняют логическую организацию кода, разбивают его на повторно используемые модули и разрабатывают тесты, чтобы убедиться, что код работает правильно.
Это не непреодолимые проблемы, признает Грус, но блокноты действительно требуют дисциплины, когда дело доходит до выполнения кода: например, путем перемещения кода анализа во внешние файлы, которые можно вызывать из блокнота, путем определения ключевых переменных в верхней части записной книжки и периодически перезапуская ядро и запуская записную книжку сверху вниз. Как пошутил один пользователь Твиттера: «Перезагрузите и запустите все, иначе этого не произойдет».
Этот урок Барба пытается преподать своим ученикам. «Я с первого дня объясняю своим ученикам, что они могут взаимодействовать с блокнотом нелинейным образом, и это дает им большие возможности для исследования», — говорит она. «Но с большой силой приходит большая ответственность».