СПОСОБ СОВМЕСТНОЙ РАБОТЫ С ИСПОЛЬЗОВАНИЕМ ВЫЧИСЛИТЕЛЬНЫХ БЛОКНОТОВ НА ОСНОВЕ ЯЧЕЕК Российский патент 2024 года по МПК G06F9/30 G06F8/30 

Описание патента на изобретение RU2823453C2

Область техники, к которой относится изобретение

[01] Настоящая технология относится к компьютерным интерактивным средам разработки программного обеспечения и, в частности, к способам и системам с применением вычислительных блокнотов на основе ячеек для совместной работы пользователей и реализации микросервисов.

Уровень техники

[02] С развитием таких областей, как обработка и анализ данных и искусственный интеллект, вычислительные блокноты стали популярным инструментом для интерактивной разработки моделей и работы с данными. Вычислительные блокноты позволяют объединять текст, исполняемый код и результаты исполнения кода в одном динамическом документе. В качестве примеров используемых в настоящее время систем вычислительных блокнотов можно привести интерактивную вычислительную систему JUPYTER, а также блокноты MATHEMATICA и AZURE DATABRICKS.

[03] В большинстве известных в настоящее время систем вычислительный блокнот состоит из ячеек, которые представляют собой блоки контента и могут содержать форматированный текст, исполняемый код или контент других видов. Ячейки, содержащие исполняемый код (называются ячейками кода), могут выполняться для формирования выходных данных, содержащих текст, изображения, визуальные представления данных, видеоматериалы, интерактивные графические элементы, аудиоматериалы или контент любого другого вида, который способен выдавать компьютер. Несмотря на то, что ячейки кода, как правило, содержат относительно небольшие блоки кода, они обычно зависят от других блоков кода в блокноте. Например, блок кода может содержать переменные, определенные в предыдущем блоке кода и выводимые в виде графика в последующем блоке кода.

[04] Эта взаимозависимость блоков кода в блокноте означает, что они должны исполняться в определенном порядке и с трудом выделяются из блокнота, в котором были первоначально созданы. Таким образом, совместное или повторное использование ячеек кода в вычислительных блокнотах затруднено и возможности совместного использования последних ограничены.

Раскрытие изобретения

[05] В различных вариантах осуществления настоящей технологии предусмотрено хранение состояния ячеек кода в вычислительных блокнотах на основе ячеек. Состояние включает в себя значения переменных, связанных с ячейкой кода, и результаты выполнения ячейки кода. В некоторых вариантах осуществления изобретения состояние также может включать в себя файлы, к которым выполняется обращение в ячейке кода, все функции, вызываемые в ячейке кода, и значения переменных, используемых в этих функциях. В общем случае состояние ячейки может включать в себя что угодно в рабочем состоянии ядра при исполнении кода в ячейке, так что ячейка кода может быть восстановлена позднее или на другом компьютере или даже вне блокнота, в котором она была первоначально создана, с сохранением ее состояния.

[06] В некоторых вариантах осуществления настоящей технологии ячейкам, содержащим сохраненное состояние (здесь называются коллаборативными ячейками), также могут назначаться уникальные адреса, упрощающие использование коллаборативных ячеек совместно с другими пользователями и доступ к коллаборативным ячейкам через сеть или из других блокнотов. Поскольку коллаборативные ячейки содержат информацию о состоянии, позволяющую выполнять их вне контекста блокнота, в котором они были первоначально созданы, они могут выполняться отдельно как микросервисы, имеющие прикладной программный интерфейс (API, Application Programing Interface) для отправки входных данных для коллаборативных ячеек и получения выходных данных от них. Таким образом, описанная технология расширяет возможности совместного использования вычислительных блокнотов на основе ячеек и совершенствует процесс разработки программного обеспечения с использованием вычислительных блокнотов.

[07] Согласно одному аспекту настоящей технологии реализован способ совместного использования вычислительного блокнота на основе ячеек. Способ включает в себя получение на первом компьютере ячейки из вычислительного блокнота на основе ячеек, содержащей исполняемый код с переменными. Способ также включает в себя исполнение исполняемого кода в ячейке для формирования результата и сохранение информации о состоянии ячейки, включая значения переменных, связанных с исполняемым кодом в ячейке и с результатом, на носителе информации.

[08] В некоторых вариантах осуществления изобретения состояние ячейки дополнительно включает в себя файлы, к которым выполняется обращение в ячейке. В некоторых вариантах осуществления изобретения файлы, к которым осуществляется обращение в ячейке, представлены фрагментами файлов, к которым осуществляется обращение в ячейке, и изменениями в этих файлах в результате исполнения в ячейке исполняемого кода. В некоторых вариантах осуществления изобретения исполняемый код в ячейке содержит вызов функции, а состояние ячейки включает в себя код для функции и значения переменных, связанных с этой функцией.

[09] В некоторых вариантах осуществления изобретения носитель информации содержит хранилище данных, доступное через сеть. В некоторых вариантах осуществления изобретения способ дополнительно включает в себя считывание состояния ячейки с носителя информации на второй компьютер для воспроизведения ячейки, включая ее состояние, на втором компьютере.

[010] В некоторых вариантах осуществления изобретения способ дополнительно включает в себя формирование для ячейки уникального адреса, содержащего ее состояние. В некоторых вариантах осуществления изобретения уникальный адрес ячейки по меньшей мере частично основан на имени ячейки и на имени пользователя ячейки. В некоторых вариантах осуществления изобретения способ дополнительно включает в себя использование уникального адреса в качестве ссылки на ячейку таким образом, что доступ к ячейке и к ее состоянию осуществляется путем перехода по этой ссылке. В некоторых вариантах осуществления изобретения способ дополнительно включает в себя получение от первого пользователя входных данных, указывающих на то, что ячейка должна использоваться совместно со вторым пользователем, и отправку второму пользователю приглашения к совместному использованию ячейки, содержащего ее уникальный адрес.

[011] В некоторых вариантах осуществления изобретения состояние ячейки дополнительно включает в себя входные и выходные данные ячейки. В некоторых из этих вариантов осуществления изобретения входные и выходные данные ячейки выбираются из числа переменных, связанных с ячейкой.

[012] В некоторых вариантах осуществления изобретения способ дополнительно включает в себя формирование микросервиса на основе ячейки путем предоставления пользователям микросервиса доступа к входным и выходным данным ячейки. В некоторых вариантах осуществления изобретения предоставление доступа к входным и выходным данным ячейки включает в себя формирование прикладного программного интерфейса, обеспечивающего доступ к входным и выходным данным ячейки. В некоторых вариантах осуществления изобретения прикладной программный интерфейс содержит удаленный прикладной программный интерфейс. В некоторых вариантах осуществления изобретения прикладной программный интерфейс содержит прикладной программный интерфейс на основе интернет-технологии (web-based).

[013] В некоторых вариантах осуществления изобретения способ дополнительно включает в себя запуск микросервиса на компьютере. В некоторых вариантах осуществления изобретения способ дополнительно включает в себя запуск множества экземпляров микросервиса так, чтобы по меньшей мере некоторые экземпляры микросервиса из множества экземпляров микросервиса выполнялись одновременно. В некоторых вариантах осуществления изобретения запуск множества экземпляров микросервиса включает в себя запуск множества экземпляров микросервиса на множестве компьютеров. В некоторых вариантах осуществления изобретения запуск множества экземпляров микросервиса включает в себя запуск множества экземпляров микросервиса в зависимости от потребности в использовании микросервиса.

[014] Согласно другому аспекту настоящей технологии реализована система, содержащая процессор, сетевой интерфейс, связанный с процессором и с сетью, носитель информации и память, связанную с процессором. Система содержит сервер, размещенный в памяти, выполняемый процессором и работающий в вычислительном блокноте на основе ячеек, хранящемся на носителе информации. Сервер содержит команды, при выполнении которых процессор получает ячейку из вычислительного блокнота на основе ячеек, содержащую исполняемый код, включая переменные, исполняет исполняемый код в ячейке для формирования результата и сохраняет на носителе информации состояние ячейки, включая значения переменных, связанных с исполняемым кодом в ячейке и с результатом.

[015] В некоторых вариантах осуществления изобретения носитель информации связан с сетью, а процессор обращается к носителю информации через сетевой интерфейс.

[016] В некоторых вариантах осуществления изобретения состояние ячейки дополнительно включает в себя по меньшей мере фрагменты файлов, к которым выполняется обращение в ячейке. В некоторых вариантах осуществления изобретения исполняемый код в ячейке содержит вызов функции, а состояние ячейки включает в себя код для функции и значения переменных, связанных с функцией.

[017] В некоторых вариантах осуществления изобретения сервер дополнительно содержит команды, при выполнении которых процессор формирует для ячейки уникальный адрес, содержащий ее состояние. В некоторых вариантах осуществления изобретения сервер дополнительно содержит команды, при выполнении которых процессор отправляет через сетевой интерфейс приглашение к совместному использованию ячейки, содержащее уникальный адрес.

[018] В некоторых вариантах осуществления изобретения сервер дополнительно содержит команды, при выполнении которых процессор формирует микросервис на основе ячейки путем предоставления пользователям микросервиса доступа к входным и выходным данным ячейки. В некоторых вариантах осуществления изобретения сервер дополнительно содержит команды, при выполнении которых процессор предоставляет доступ к входным и выходным данным ячейки путем формирования прикладного программного интерфейса, обеспечивающего доступ к входным и выходным данным ячейки. В некоторых вариантах осуществления изобретения прикладной программный интерфейс содержит удаленный прикладной программный интерфейс. В некоторых вариантах осуществления изобретения сервер дополнительно содержит команды, при выполнении которых процессор запускает микросервис на компьютере.

Краткое описание чертежей

[019] Эти и другие признаки, аспекты и преимущества настоящей технологии поясняются в дальнейшем описании, в приложенной формуле изобретения и на следующих чертежах.

[020] На фиг. 1 представлена схема примера компьютерной системы для использования в некоторых вариантах реализации систем и/или способов согласно настоящей технологии.

[021] На фиг. 2 представлен пример интерфейса для интерактивного вычислительного блокнота на основе ячеек.

[022] На фиг. 3 представлен пример высокоуровневой архитектуры системы вычислительного блокнота на основе ячеек.

[023] На фиг. 4 представлена структурная схема системы вычислительного блокнота на основе ячеек согласно варианту осуществления настоящей технологии.

[024] На фиг. 5 представлена блок-схема способа хранения и совместного использования коллаборативной ячейки согласно различным вариантам осуществления настоящей технологии.

[025] На фиг. 6 представлена блок-схема способа получения и восстановления состояния коллаборативной ячейки согласно различным вариантам осуществления настоящей технологии.

[026] На фиг. 7 представлен пример блокнота, содержащего ячейку кода, которая может быть использована в качестве основы микросервиса для формирования случайного целого числа в диапазоне, заданном в качестве входных данных.

[027] На фиг. 8 представлена блок-схема способа запуска микросервисов на основе ячеек согласно различным вариантам осуществления настоящей технологии.

Осуществление изобретения

[028] Ниже со ссылкой на приложенные чертежи более полно описаны различные иллюстративные варианты осуществления настоящей технологии. Тем не менее, настоящая технология может быть реализована во многих различных формах и не должна рассматриваться как ограниченная описанными здесь иллюстративными вариантами осуществления. Абсолютные и относительные размеры слоев и областей могут быть увеличены на чертежах для ясности. Одинаковые числовые обозначения везде относятся к одинаковым элементам.

[029] Представленные здесь примеры и условный язык предназначены для обеспечения лучшего понимания принципов настоящей технологии, а не для ограничения ее объема до таких специально приведенных примеров и условий. Должно быть понятно, что специалисты в данной области техники способны разработать различные способы и устройства, которые явно не описаны и не показаны, но реализуют принципы настоящей технологии в пределах ее существа и объема.

[030] Кроме того, чтобы способствовать лучшему пониманию, последующее описание может содержать упрощенные варианты реализации настоящей технологии. Специалистам в данной области должно быть понятно, что другие варианты осуществления настоящей технологии могут быть значительно сложнее.

[031] В некоторых случаях приводятся полезные примеры модификаций настоящей технологии. Они способствуют пониманию, но также не определяют объема или границ настоящей технологии. Представленный перечень модификаций не является исчерпывающим и специалист в данной области может разработать другие модификации в пределах объема настоящей технологии. Кроме того, если в некоторых случаях модификации не описаны, это не означает, что они невозможны и/или что описание содержит единственно возможный вариант реализации того или иного элемента настоящей технологии.

[032] Должно быть понятно, что, несмотря на то, что в отношении различных элементов здесь могут использоваться числительные «первый», «второй», «третий» и т.д., это не является ограничением для этих элементов. Эти числительные используются для указания различия между элементами. Таким образом, обсуждаемый далее первый элемент можно назвать вторым элементом без выхода за границы настоящей технологии. В контексте данного документа термин «и/или» соответствует любому элементу и всем сочетаниям элементов из соответствующих перечисленных элементов.

[033] Должно быть понятно, что указание на соединение или связь элемента с другим элементом означает, что он может быть непосредственно соединен или связан с другим элементом либо при этом могут присутствовать промежуточные элементы. Если указано, что элемент непосредственно соединен или непосредственно связан с другим элементом, то промежуточные элементы отсутствуют. Другие слова, используемые для описания взаимосвязи между элементами, следует интерпретировать аналогичным образом (например, «между» и «непосредственно между», «примыкающий» и «непосредственно примыкающий» и т.д.).

[034] Используемая здесь терминология предназначена лишь для описания конкретных иллюстративных вариантов осуществления, но не для ограничения объема охраны настоящей технологии. Используемые здесь слова в единственном числе также подразумевают слова во множественном числе, если контекст явно не указывает на иное. Должно быть понятно, что используемые здесь термины «содержит» и/или «содержащий» соответствуют наличию указанных признаков, объектов, шагов, операций, элементов и/или компонентов, но не исключают наличия или добавления одного или нескольких других признаков, объектов, шагов, операций, элементов, компонентов и/или их групп.

[035] Функции различных элементов, показанных на чертежах, включая любой функциональный блок, обозначенный как «процессор», могут быть реализованы с использованием специализированных аппаратных средств, а также аппаратных средств, способных выполнять программное обеспечение. Если используется процессор, эти функции могут выполняться одним выделенным процессором, одним совместно используемым процессором или множеством отдельных процессоров, некоторые из которых могут использоваться совместно. В некоторых вариантах осуществления настоящей технологии процессор может представлять собой процессор общего назначения, такой как центральный процессор (CPU), или специализированный процессор, такой как цифровой сигнальный процессор (DSP). Кроме того, явное использование термина «процессор» не должно трактоваться как указание исключительно на аппаратные средства, способные выполнять программное обеспечение, и может подразумевать специализированную интегральную схему (ASIC), программируемую вентильную матрицу (FPGA), постоянное запоминающее устройство (ПЗУ) для хранения программного обеспечения, оперативное запоминающее устройство (ОЗУ) и энергонезависимое запоминающее устройство, но не ограничивается ими. Также могут подразумеваться другие аппаратные средства, общего назначения и/или заказные.

[036] Программные модули либо просто модули или блоки, реализация которых предполагается в виде программных средств, могут быть представлены здесь как любое сочетание элементов блок-схемы или других элементов, указывающих на выполнение шагов процесса и/или содержащих текстовое описание. Такие модули могут выполняться аппаратными средствами, показанными явно или подразумеваемыми. Кроме того, должно быть понятно, что модуль может содержать, например, реализующие требуемые возможности компьютерную программную логику, компьютерные программные команды, прикладное программное обеспечение, стек, встроенное программное обеспечение, цепи аппаратных средств либо их сочетание, не ограничиваясь ими.

[037] В контексте данного описания термин «база данных» означает любой структурированный набор данных, независимо от его конкретной структуры, программного обеспечения для управления базой данных или компьютерных аппаратных средств для хранения этих данных, их применения или обеспечения их использования иным способом. База данных может располагаться в тех же аппаратных средствах, где реализован процесс, обеспечивающий хранение или использование информации, хранящейся в базе данных, либо база данных может располагаться в отдельных аппаратных средствах, таких как специализированный сервер или множество серверов.

[038] Настоящая технология может быть реализована в виде системы, способа и/или компьютерного программного продукта. Компьютерный программный продукт может содержать машиночитаемый носитель информации (или несколько таких носителей), хранящий машиночитаемые программные команды, при выполнении которых процессор обеспечивает реализацию аспектов настоящей технологии. Машиночитаемый носитель информации может, например, представлять собой электронное запоминающее устройство, магнитное запоминающее устройство, оптическое запоминающее устройство, электромагнитное запоминающее устройство, полупроводниковое запоминающее устройство или любое подходящее их сочетание. Открытый перечень конкретных примеров машиночитаемого носителя информации включает в себя портативный компьютерный диск, жесткий диск, ОЗУ, ПЗУ, флэш-память, оптический диск, карту памяти, гибкий диск, носитель с механическим или визуальным кодированием (например, перфокарту или штрих-код) и/или любое их сочетание. В данном контексте машиночитаемый носитель информации должен рассматриваться как машиночитаемый физический носитель информации. Он не должен рассматриваться как изменяющийся сигнал, такой как радиоволны или другие свободно распространяющиеся электромагнитные волны, электромагнитные волны, распространяющиеся через волновод или другую среду передачи (например, световые импульсы, проходящие через волоконно-оптический кабель), или электрические сигналы, передаваемые по проводам.

[039] Должно быть понятно, что машиночитаемые программные команды могут быть загружены с машиночитаемого носителя информации в соответствующие вычислительные или обрабатывающие устройства либо во внешний компьютер или внешнее запоминающее устройство через сеть, например, через сеть Интернет, локальную сеть, глобальную сеть и/или беспроводную сеть. Сетевой интерфейс в вычислительном или обрабатывающем устройстве может получать машиночитаемые программные команды через сеть и пересылать машиночитаемые программные команды для хранения в машиночитаемом носителе информации в соответствующем вычислительном или обрабатывающем устройстве.

[040] Машиночитаемые программные команды для выполнения действий согласно настоящей технологии могут представлять собой команды ассемблера, машинные команды, команды встроенного программного обеспечения, данные конфигурации для интегральных схем либо другой исходный или объектный код, написанный с использованием любого сочетания языков программирования. Машиночитаемые программные команды могут выполняться полностью на компьютере пользователя, частично на компьютере пользователя, в качестве отдельного пакета программного обеспечения, частично на компьютере пользователя и частично на удаленном компьютере или полностью на удаленном компьютере либо сервере. В последнем случае удаленный компьютер может быть связан с компьютером пользователя через сеть любого вида.

[041] Описание принципов, аспектов и вариантов реализации настоящей технологии, а также их конкретные примеры предназначены для охвата их структурных и функциональных эквивалентов, независимо от того, известны они в настоящее время или будут разработаны в будущем. Например, специалистам в данной области техники должно быть понятно, что любые описанные здесь структурные схемы соответствуют концептуальным представлениям иллюстративных принципиальных схем, реализующих основы настоящей технологии. Также должно быть понятно, что любые блок-схемы, схемы процессов, диаграммы изменения состояния, псевдокоды и т.п. соответствуют различным процессам, которые могут быть представлены в машиночитаемых программных командах. Эти машиночитаемые программные команды могут быть предоставлены процессору или другому программируемому устройству обработки данных для формирования машины так, чтобы команды, выполняемые процессором компьютера или другим программируемым устройством обработки данных, обеспечивали средства для реализации функций или действий, указанных в блок-схеме, и/или блока либо нескольких блоков блок-схемы. Эти машиночитаемые программные команды также могут быть сохранены в машиночитаемом носителе информации, который может предписывать компьютеру, программируемому устройству обработки данных и/или другим устройствам функционировать особым образом, чтобы машиночитаемый носитель информации с хранящимися в нем командами включал в себя изделие, содержащее команды, реализующее аспекты функций или действий, указанных в блок-схемах, схемах процессов, диаграммах изменения состояния, псевдокодах и т.п.

[042] Эти машиночитаемые программные команды также могут быть загружены в компьютер, иное программируемое устройство обработки данных или другие устройства, чтобы инициировать последовательность рабочих шагов, подлежащих выполнению на компьютере, ином программируемом устройстве или в других устройствах, для формирования компьютерного процесса таким образом, чтобы команды, исполняемые на компьютере, ином программируемом устройстве или в других устройствах, реализовывали функции или действия, указанные в блок-схемах, схемах процессов, диаграммах изменения состояния, псевдокодах и т.п.

[043] В некоторых альтернативных вариантах осуществления изобретения функции, указанные на блок-схемах, схемах процессов, диаграммах изменения состояния, в псевдокодах и т.п., могут реализовываться в порядке, отличном от указанного на чертежах. Например, два блока, представленные на блок-схеме как последовательные, фактически могут выполняться одновременно или иногда эти блоки могут выполняться в обратном порядке – в зависимости от реализуемой ими функции. Также следует отметить, что каждая функция, указанная на чертежах, и сочетания таких функций могут быть реализованы системами на основе специализированных аппаратных средств, выполняющими указанные функции или действия, либо сочетаниями специализированных аппаратных средств и компьютерных команд.

[044] Далее с учетом вышеизложенных принципов рассмотрены некоторые не имеющие ограничительного характера примеры, иллюстрирующие различные варианты реализации аспектов настоящей технологии.

Компьютерная система

[045] На фиг. 1 представлена компьютерная система 100. Компьютерная система 100 может представлять собой многопользовательский компьютер, однопользовательский компьютер, ноутбук, планшетный компьютер, смартфон, встроенную систему управления или любую другую компьютерную систему, которая известна в настоящее время или будет разработана в будущем. Кроме того, следует понимать, что некоторые или все элементы компьютерной системы 100 могут быть виртуализированы и/или основаны на облачных вычислениях. Как показано на фиг. 1, компьютерная система 100 содержит один или несколько процессоров 102, память 110, интерфейс 120 хранилища данных и сетевой интерфейс 140. Эти элементы системы взаимосвязаны через шину 150, которая может содержать одну или несколько внутренних и/или внешних шин (не показаны), таких как шина PCI, шина USB, шина FireWire стандарта IEEE 1394, шина SCSI, шина Serial-ATA и т.д., с которыми различные аппаратные элементы соединены электронными средствами.

[046] Память 110, которая может представлять собой ОЗУ или память любого другого вида, может содержать данные 112, операционную систему 114 и программу 116. Данные 112 могут представлять собой любые данные, соответствующие входным или выходным данным любой программы в компьютерной системе 100. Операционная система 114 представляет собой операционную систему, такую как Microsoft Windows или Linux. Программа 116 может представлять собой любую программу или набор программ, содержащих запрограммированные команды, которые могут исполняться процессором для управления действиями, выполняемыми компьютерной системой 100.

[047] Интерфейс 120 хранилища данных используется для подключения к компьютерной системе 100 запоминающих устройств, таких как запоминающее устройство 125. Запоминающее устройство 125 одного вида представляет собой твердотельный накопитель, который может использовать блок интегральных схем для постоянного хранения данных. Запоминающее устройство 125 другого вида представляет собой накопитель на жестких дисках, такой как электромеханическое устройство, использующее магнитное запоминающее устройство для хранения и извлечения цифровых данных. Запоминающее устройство 125 также может представлять собой накопитель на оптических дисках, устройство для считывания карт памяти, таких как SD-карта, или устройство флэш-памяти, которое может быть подключено к компьютерной системе 100, например, через универсальную последовательную шину (USB).

[048] В некоторых вариантах реализации изобретения в компьютерной системе 100 могут использоваться хорошо известные механизмы виртуальной памяти, позволяющие программам компьютерной системы 100 работать так, как если бы они имели доступ к большому непрерывному адресному пространству, а не обращались к нескольким областям памяти меньшего размера, таким как память 110 и запоминающее устройство 125. Таким образом, несмотря на то, что данные 112, операционная система 114 и программы 116 показаны, как размещенные в памяти 110, специалисту в данной области техники должно быть понятно, что они не обязательно должны одновременно полностью содержаться в памяти 110.

[049] Процессоры 102 могут содержать один или несколько микропроцессоров и/или других интегральных схем. Процессоры 102 исполняют программные команды, хранящиеся в памяти 110. При запуске компьютерной системы 100 процессоры 102 могут сначала выполнять процедуру загрузки и/или программные команды, формирующие операционную систему 114.

[050] Сетевой интерфейс 140 используется для подключения компьютерной системы 100 к другим компьютерным системам или к сетевым устройствам (не показаны) через сеть 160. Сетевой интерфейс 140 может содержать сочетание аппаратных и программных средств, обеспечивающих связь через сеть 160. В некоторых вариантах реализации изобретения сетевой интерфейс 140 может представлять собой беспроводной сетевой интерфейс. Программное обеспечение сетевого интерфейса 140 может содержать программное обеспечение, использующее один или несколько сетевых протоколов для связи через сеть 160. Например, сетевые протоколы могут включать в себя протокол управления передачей/интернет-протокол (TCP/IP, Transmission Control Protocol/Internet Protocol).

[051] Должно быть понятно, что компьютерная система 100 представляет собой лишь пример и что описанная технология может быть использована с компьютерными системами или другими компьютерными устройствами с иной конфигурацией.

Вычислительные блокноты

[052] На фиг. 2 представлен пример интерфейса интерактивного вычислительного блокнота 200 на основе ячеек. Вычислительный блокнот 200 на основе ячеек представляет собой структуру или файл, состоящий из ячеек, таких как ячейки 202, 204, 206 и 208. В представленном на фиг. 2 примере каждая ячейка может представлять собой ячейку одного из нескольких видов, например, ячейку разметки (markdown), ячейку кода (code) или ячейку без обработки (raw). Ячейка разметки, такая как ячейка 202, содержит форматированный текст, который (в данном примере) представлен в формате разметки (не показан). Ячейка кода, такая как ячейки 204 и 206, содержит исходный код, который может быть исполнен ядром (см. ниже) для изменения рабочего состояния ядра и/или для формирования выходных данных, таких как выходные данные ячейки кода, связанные с ячейкой 206 кода. Выходные данные ячейки кода могут представлять собой текст, графические материалы, звук, видеоматериалы, анимацию, интерактивные графические элементы или выходные данные любого другого вида, которые могут быть сформированы компьютером. Ячейка без обработки, такая как ячейка 208, обычно содержит контент, не оцениваемый ядром, связанным с блокнотом. Например, ячейка без обработки может содержать команды, подлежащие использованию программным обеспечением для преобразования блокнота, способным преобразовывать файл блокнота в формат, который может быть легко опубликован, такой как PDF, HTML или LaTeX.

[053] Поскольку ячейки кода могут изменять рабочее состояние ядра, исполняющего код в вычислительном блокноте 200 на основе ячеек, то в традиционной системе блокнота ячейки кода требуется выполнять по порядку. Например, если ячейка 206 кода выполняется раньше ячейки 204 кода, то переменная «a» оказывается не определенной, что приводит к ошибке. Таким образом, ячейки в традиционной системе блокнота работают не автономно, а лишь в качестве части блокнота и должны выполняться в определенном порядке для правильного формирования их результатов.

[054] Должно быть понятно, что описанные выше виды ячеек соответствуют видам ячеек, используемых в блокнотах интерактивной вычислительной системы JUPYTER. Существуют другие системы блокнотов на основе ячеек, такие как блокноты MATHEMATICA, способные поддерживать другие виды ячеек. Специалистам в данной области должно быть понятно, что данная технология, описанная здесь применительно к блокнотам интерактивной вычислительной системы JUPYTER, может применяться и в других системах вычислительных блокнотов на основе ячеек. Кроме того, код в ячейках 204 и 206 кода написан на языке программирования PYTHON. Должно быть понятно, что в блокноте могут использоваться многие языки программирования и что язык PYTHON используется лишь для иллюстрации.

[055] В представленном на фиг. 2 примере вычислительный блокнот 200 на основе ячеек реализует интерактивный документ, который может содержать исполняемый код (обычно в виде исходного кода) в ячейках кода. Такие блокноты все чаще используются в приложениях для обработки и анализа данных и в приложениях искусственного интеллекта. Они предоставляют пользователям интерактивную среду, в которой их вычисления могут быть записаны, протестированы, отредактированы и задокументированы вместе с соответствующими результатами. В отличие от других сред разработки, блокноты обеспечивают автономную регистрацию вычислений с кодом и результатами. Пользователь вычислительного блокнота 200 на основе ячеек может добавлять или удалять ячейки, редактировать ячейки и выполнять ячейки кода, такие как ячейки 204 и 206 кода. Пользователь также может использовать блокноты совместно с другими пользователями и преобразовывать блокноты в разнообразные статические форматы для публикации или совместного использования.

[056] Ниже со ссылкой на фиг. 3 описан пример архитектуры высокого уровня системы 300 вычислительного блокнота на основе ячеек. Система 300 вычислительного блокнота на основе ячеек содержит интерфейсный модуль 302, сервер 304 блокнота и ядро 306. Эти компоненты могут выполняться на одном компьютере или на различных компьютерах, соединенных через сеть.

[057] Интерфейсный модуль 302 обрабатывает взаимодействия с пользователем системы 300 вычислительного блокнота на основе ячеек. Он отображает блокнот и все ячейки пользователю, а также принимает входные данные от пользователя. В некоторых вариантах осуществления изобретения интерфейсный модуль 302 может содержать веб-браузер, обменивающийся данными с сервером блокнота с использованием стандартных протоколов, подходящих для веб-браузера, таких как HTTP и/или WebSockets API. Следует отметить, что использование веб-браузера и протоколов, подходящих для веб-браузера, в интерфейсном модуле приведено в иллюстративных целях. Например, в некоторых вариантах осуществления изобретения интерфейсный модуль 302 может представлять собой специализированный пользовательский интерфейс, обменивающийся данными с сервером блокнота через проприетарный интерфейс API. Для специалистов в данной области должно быть понятно, что для этого могут быть использованы многие технологии пользовательских интерфейсов и протоколы связи.

[058] Сервер 304 блокнота отвечает за загрузку и сохранение блокнотов, например, файлов блокнота, таких как файл 308 блокнота. Сервер 304 блокнота также обрабатывает взаимодействия с интерфейсным модулем 302 для отображения контента блокнота и получения входных данных от пользователя блокнота, а также осуществляет связь с ядром 306 с целью выполнения ячеек кода и получения результатов такого выполнения. Этот обмен данными с ядром 306 может выполняться с использованием различных протоколов связи или интерфейсов API в зависимости от среды, в которой выполняются сервер 304 блокнота и ядро 306. Например, в некоторых вариантах осуществления изобретения протокол для управления ядром может использоваться с библиотекой или протоколом обмена сообщениями для применения в распределенных приложениях, таким как ZeroMQ. Сервер 304 блокнота также может осуществлять преобразование блокнота в статический формат (не показано), такой как файл HTML, файл LaTeX или файл PDF.

[059] Ядро 306 отвечает за исполнение кода, отправляемого ему сервером 304 блокнота, и отправку выходных данных из исполняемого кода обратно серверу 304 блокнота. В общем случае ядро 306 обрабатывает код, написанный на конкретном языке программирования, таком как PYTHON, R, JULIA, C++ и т.д. Исполнение кода может предусматривать интерпретацию или компиляцию кода с использованием традиционного динамического (JIT, just-in-time) компилятора. Ядро 306 также сохраняет рабочее состояние исполняемого кода, которое включает в себя значения всех переменных, стек вызовов, дескрипторы файлов для всех открытых файлов и/или сетевых сокетов и т.д. Ядро 306 обычно отделено от блокнота: сервер 304 блокнота отправляет ядру ячейки кода для выполнения, а полученные при выполнении выходные данные отправляет назад серверу 304 блокнота.

[060] В традиционной системе блокнота выходные данные ячейки кода могут быть сохранены в виде части блокнота, но рабочее состояние ядра при этом не сохраняется. Это означает, что если впоследствии блокнот после выключения системы снова загружается или если блокнот загружается на другой компьютер, то сохраненные выходные данные могут быть отображены, но рабочее состояние ядра будет отличаться, поэтому требуется повторное исполнение кода для восстановления рабочего состояния, прежде чем в блокноте можно будет выполнять последующую работу. В некоторых случаях даже выполнение ячеек кода по порядку может не обеспечивать те же результаты. Например, как показано на фиг. 2, в ячейке 204 кода переменная «a» представляет собой случайное целое число в диапазоне от 10 до 100. Несмотря на то, что функция «randint» формирует только псевдослучайный результат, исполнение этого кода не обеспечивает один и тот же результат, если начальное число при генерации псевдослучайных чисел не было одинаковым. Подобные проблемы могут возникать всякий раз, когда имеются пользовательские входные данные, которые могут различаться при двух исполнениях, входные данные из файлов, которые могли быть изменены, входные данные из внешнего источника, такого как датчик или сеть, и т.п.

[061] Таким образом, блокнот, используемый совместно с другим пользователем, может не обеспечивать формирование тех же результатов на компьютере такого пользователя. При перезагрузке блокнота пользователю может потребоваться повторно выполнять ячейки кода, и даже в этом случае он может не получить те же результаты. Кроме того, поскольку ячейки могут основываться на рабочем состоянии, задаваемом другими ячейками в блокноте, может оказаться невозможным извлечь ячейку из блокнота, а также повторно использовать или совместно использовать только код из этой ячейки.

[062] Настоящая технология по меньшей мере частично устраняет эти проблемы путем сохранения состояния ячеек кода. Состояние включает в себя значения переменных, связанных с ячейкой кода, и результаты выполнения ячейки кода. В некоторых вариантах осуществления изобретения состояние также может включать в себя файлы, к которым выполняется обращение в ячейке кода, все функции, вызываемые в ячейке кода, и значения переменных, используемых в этих функциях. В общем случае состояние ячейки может включать в себя что угодно из рабочего состояния ядра 306 при выполнении ячейки кода так, чтобы ячейка кода могла быть восстановлена позднее или на другом компьютере либо даже вне блокнота, в котором она была первоначально создана, с сохранением ее состояния.

[063] На фиг. 4 представлена высокоуровневая структурная схема системы 400 вычислительного блокнота на основе ячеек согласно варианту осуществления настоящей технологии. Система 400 вычислительного блокнота на основе ячеек подобна системе 300 вычислительного блокнота на основе ячеек, описанной выше со ссылкой на фиг. 3. Система 400 вычислительного блокнота на основе ячеек содержит интерфейсный модуль 402, сервер 404 блокнота и ядро 406.

[064] Интерфейсный модуль 402 обрабатывает взаимодействия с пользователем системы 400 вычислительного блокнота на основе ячеек. Он отображает блокнот и все ячейки пользователю, а также принимает входные данные от пользователя. Как и в системе 300 вычислительного блокнота на основе ячеек, описанной со ссылкой на фиг. 3, интерфейсный модуль 402 может содержать веб-браузер, который обменивается данными с сервером блокнота с использованием стандартных протоколов, подходящих для веб-браузера, таких как HTTP и/или WebSockets API.

[065] Сервер 404 блокнота загружает и сохраняет блокноты, например, в файлах блокнота, таких как файл 408 блокнота, обрабатывает взаимодействия с интерфейсным модулем 402 для отображения контента блокнота и получения входных данных от пользователя блокнота, а также может осуществлять преобразование блокнота в статический формат (не показано). Сервер блокнота также осуществляет связь с ядром 406 с целью выполнения ячеек кода и получения результатов такого выполнения. Кроме того, согласно некоторым вариантам осуществления настоящей технологии, сервер 404 блокнота может обмениваться данными с интерфейсом 410 состояния ядра 406 с целью получения информации о рабочем состоянии ядра 406. Затем эта информация о состоянии может быть полностью или частично сохранена сервером 404 блокнота вместе с ячейкой кода как коллаборативная ячейка 412. Информация о состоянии, сохраненная в коллаборативной ячейке 412, может содержать значения переменных, связанных с ячейкой кода, результаты выполнения ячейки кода, файлы, к которым выполняется обращение в ячейке кода, функции, вызываемые в ячейке кода, значения переменных, используемых в этих функциях, и другую информацию о состоянии ячейки, ее входных данных и выходных данных. В некоторых вариантах осуществления изобретения коллаборативная ячейка 412 может быть сохранена на доступном через сеть носителе информации (не показан). В некоторых вариантах осуществления изобретения к коллаборативной ячейке 412 могут обращаться другие компьютеры в сети (не показаны) для воспроизведения ячейки, включая ее состояние.

[066] Должно быть понятно, что для сохранения информации о состоянии коллаборативной ячейки 412 могут потребоваться значительные ресурсы. Например, если файлы, к которым выполняется обращение в ячейке, сохраняются как часть состояния ячейки, то это может потребовать использования большого объема хранилища данных. В некоторых случаях ячейка может обращаться к базам данных, размер которых может составлять много гигабайтов или терабайтов. В некоторых вариантах осуществления изобретения для уменьшения используемого объема хранилища данных могут применяться известные методы, такие как сохранение лишь фрагментов файлов или баз данных, к которым выполняется доступ или которые изменяются в ячейке, или сохранение различий в файлах, возникающих в результате выполнения ячейки.

[067] В некоторых вариантах осуществления изобретения сервер 404 блокнота может содержать модуль 420 формирования адреса. Модуль 420 формирования адреса формирует уникальный адрес 414 коллаборативной ячейки 412. Например, уникальный адрес 414 может быть определен с использованием имени пользователя, создавшего коллаборативную ячейку 412, имени блокнота, в котором была сформирована ячейка, имени, назначенного ячейке, информации о времени и дате, информации о состоянии коллаборативной ячейки 412, такой как хэш-значение информации о состоянии, случайного идентификатора или другой информации, которая, как известно, подлежит использованию при формировании уникальных адресов или имен файлов. Уникальный адрес 414, подготовленный модулем 420 формирования адреса, может быть связан с коллаборативной ячейкой 412 и в некоторых вариантах осуществления изобретения может использоваться в качестве ссылки на коллаборативную ячейку 412 для обеспечения доступа к коллаборативной ячейке 412.

[068] В некоторых вариантах осуществления изобретения сервер 404 блокнота может содержать модуль 422 совместного использования. Модуль 422 совместного использования управляет совместным использованием коллаборативной ячейки 412. В некоторых вариантах осуществления изобретения пользователь блокнота может указывать, что ячейка должна использоваться совместно с другим пользователем. Затем модуль 422 совместного использования может отправлять этому другому пользователю приглашение 416 к совместному использованию коллаборативной ячейки 412 с помощью электронной почты или других электронных средств связи. В некоторых вариантах осуществления изобретения приглашение 416 может содержать уникальный адрес 414 коллаборативной ячейки 412.

[069] Как описано ниже, в некоторых вариантах осуществления изобретения сервер 404 блокнота также может способствовать использованию коллаборативной ячейки, такой как коллаборативная ячейка 412, в качестве микросервиса. Поскольку коллаборативные ячейки содержат информацию о состоянии, позволяющую выполнять их вне контекста блокнота, они могут реализовывать сервисы путем получения в коллаборативной ячейке входных данных через интерфейс с ячейкой и предоставления выходных данных с использованием этого интерфейса.

[070] Ядро 406 отвечает за исполнение кода, отправляемого ему сервером 404 блокнота, и за отправку выходных данных выполняемого кода назад серверу 404 блокнота. Ядро 406 также сохраняет рабочее состояние исполняемого кода, которое включает в себя значения всех переменных, стек вызовов, дескрипторы файлов для всех открытых файлов и/или сетевых сокетов и т.д. Поскольку ядро 406 отделено от блокнота, для предоставления серверу 304 блокнота доступа к информации о рабочем состоянии используется интерфейс 410 состояния. В некоторых вариантах осуществления изобретения интерфейс 410 состояния может использовать известный протокол, такой как протокол адаптера отладки (DAP, Debug Adaptor Protocol). В некоторых вариантах осуществления изобретения для предоставления доступа к информации о состоянии, такой как значения переменных, интерфейс 410 состояния может использовать проприетарный протокол для предоставления доступа к информации о состоянии. Интерфейс 410 состояния также может предоставлять информацию о состоянии серверу 404 блокнота в последовательном виде, например, в виде последовательного потока в ответ на запрос информации о состоянии.

[071] Должно быть понятно, что структурная схема, показанная на фиг. 4, представляет собой лишь один пример системы вычислительного блокнота на основе ячеек согласно настоящей технологии и что возможно множество других вариантов ее реализации. Например, в некоторых вариантах осуществления изобретения информация о состоянии коллаборативной ячейки может сохраняться непосредственно ядром 406, а не сервером 404 блокнота. В таких вариантах осуществления изобретения для доступа к информации о состоянии в ядре 406 интерфейс, такой как интерфейс 410 состояния, может не использоваться. В некоторых вариантах осуществления изобретения для преобразования информации о состоянии коллаборативной ячейки в ядре в последовательный вид могут использоваться известные библиотеки. Например, для ядра PYTHON при преобразовании информации о рабочем состоянии ядра в последовательный вид может использоваться библиотека DILL (например, как описано в работе M.M. McKerns, L. Strand, T. Sullivan, A. Fang, M.A.G. Aivazis, Building a framework for predictive science, Proceedings of the 10th Python in Science Conference, 2011).

[072] На фиг. 5 представлена блок-схема способа 500 хранения и совместного использования коллаборативной ячейки согласно некоторым вариантам осуществления настоящей технологии. В блоке 502 ячейка кода, содержащая исполняемый код, принимается из вычислительного блокнота на основе ячеек. Исполняемый код может содержать переменные и может обращаться к файлам и/или к функциям. Здесь исполняемый код в ячейке представляет собой написанный на языке программирования исходный код, который может интерпретироваться или компилироваться для исполнения на компьютере, но он также может представлять собой любой код, который может непосредственно исполняться на компьютере или может быть преобразован в исполняемый вид. Функции могут включать в себя, например, функции, подпрограммы, классы, модули или другие многократно используемые блоки кода. Такие функции могут использоваться и/или задаваться в ячейке кода.

[073] В блоке 504 исполняемый код из ячейки исполняется на компьютере для формирования результата. Его исполнение может включать в себя интерпретацию или компиляцию кода. Результат может отображаться пользователю или выводиться иным образом либо может предусматриваться лишь внутреннее изменение рабочего состояния ядра, в котором исполняется код.

[074] В блоке 506 состояние ячейки сохраняется на носителе информации, таком как жесткий диск. Состояние ячейки может включать в себя значения любых переменных, связанных с ячейкой, результаты выполнения ячейки, любые файлы, к которым выполняется обращение в ячейке, любые функции, вызываемые и/или задаваемые в ячейке, переменные или файлы, к которым выполняется обращение в этих функциях, и любую другую информацию о рабочем состоянии ячейки, которая может быть использована для восстановления состояния ячейки позднее или на другом компьютере. В некоторых вариантах осуществления изобретения носитель информации может содержать доступное через сеть хранилище данных. В некоторых вариантах осуществления изобретения состояние ячейки может быть сохранено в последовательном виде.

[075] В блоке 508 формируется уникальный адрес для коллаборативной ячейки. Как описано выше, уникальный адрес может быть определен с использованием имени пользователя, создавшего коллаборативную ячейку, имени блокнота, в котором была сформирована ячейка, имени, назначенного ячейке, информации о времени и дате, информации из состояния коллаборативной ячейки, такой как хэш-значение информации о состоянии, случайного идентификатора или другой информации, которая, как известно, подлежит использованию при формировании уникальных адресов или имен файлов. В некоторых вариантах осуществления изобретения уникальный адрес может использоваться в качестве ссылки на коллаборативную ячейку.

[076] В блоке 510 от пользователя вычислительного блокнота на основе ячеек принимаются входные данные, указывающие на то, что коллаборативная ячейка должна использоваться совместно с другим пользователем. Другой пользователь может быть на том же компьютере или на другом компьютере. При получении этих входных данных в блоке 512 другому пользователю отправляется приглашение к совместному использованию коллаборативной ячейки. Приглашение может содержать уникальный адрес коллаборативной ячейки.

[077] В некоторых вариантах осуществления изобретения дополнительный блок 514 может формировать микросервис на основе коллаборативной ячейки. Например, это может выполняться путем назначения переменных, используемых в коллаборативной ячейке в качестве входных и выходных данных коллаборативной ячейки, и предоставления пользователям микросервиса доступа к этим входным и выходным данным. Микросервисы на основе ячеек более подробно описаны ниже.

[078] На фиг. 6 представлена блок-схема способа 600 получения и восстановления состояния коллаборативной ячейки согласно некоторым вариантам осуществления настоящей технологии. В блоке 602 на компьютере принимается приглашение к совместному использованию коллаборативной ячейки. Приглашение содержит уникальный адрес коллаборативной ячейки.

[079] В блоке 604 уникальный адрес используется для доступа к коллаборативной ячейке. В некоторых вариантах осуществления изобретения уникальный адрес содержит ссылку на коллаборативную ячейку, которая используется для доступа к коллаборативной ячейке на носителе информации. В некоторых вариантах осуществления изобретения уникальный адрес используется для доступа к коллаборативной ячейке из доступного через сеть хранилища данных. В некоторых вариантах осуществления изобретения доступ к коллаборативной ячейке предусматривает отправку уникального адреса серверу, такому как сервер блокнота.

[080] В блоке 606 с носителя информации считывается информация о состоянии коллаборативной ячейки и коллаборативная ячейка воспроизводится, включая ее состояние. В некоторых вариантах осуществления изобретения это может выполняться путем считывания с носителя информации последовательной информации о состоянии и восстановления состояния в ядре системы вычислительного блокнота на основе ячеек.

Микросервисы на основе ячеек

[081] В дополнение к обеспечению совместного использования ячеек настоящая технология может быть использована для реализации микросервисов на основе ячеек и их состояния. Микросервис представляет собой независимую часть программного обеспечения, которая выполняет заданную задачу и осуществляет связь через заданный интерфейс API. В микросервисной программной архитектуре приложения могут создаваться из набора таких микросервисов, обменивающихся данными друг с другом.

[082] Ячейки кода в блокнотах представляют собой небольшие элементы кода, которые часто создаются для выполнения одной функции. Поскольку коллаборативные ячейки согласно настоящей технологии допускают выполнение ячеек блокнота вне контекста блокнота, коллаборативные ячейки могут использоваться в качестве микросервисов. С помощью уникальных адресов, которые могут быть предоставлены коллаборативным ячейкам, пользователи могут связывать созданные ячейки друг с другом в различном порядке и различных сочетаниях с целью создания новых программ. Чтобы сделать коллаборативные ячейки более похожими на микросервисы, имеющие заданный интерфейс API, некоторые из переменных, связанных с ячейкой, могут быть назначены в качестве входных и/или выходных данных и могут задавать интерфейс API для ячейки как микросервиса.

[083] В примере использования ячейки в качестве микросервиса специалист по машинному обучению в компании может создать блокнот, в котором нейронная сеть обучена распознаванию котов и собак на изображениях. Одна из ячеек кода в этом блокноте может быть настроена для определения того, является ли входное изображение кошкой или собакой. Входные данные ячейки могут представлять собой изображение, а выходные данные – вероятность того, что изображение содержит кошку, и вероятность того, что изображение содержит собаку. Входные и выходные данные ячейки могут представлять собой переменные, к которым выполняется обращение в ячейке. Например, в блокноте пользователь ячейки может сохранять входное изображение в переменной, используемой в ячейке, и может получать выходные вероятности в переменных, задаваемых в ячейке. Путем сохранения этой ячейки вместе с ее состоянием в качестве коллаборативной ячейки эта ячейка может использоваться вне блокнота с сохранением доступа к сформированному в блокноте состоянию, такому как нейронная сеть и ее обучение.

[084] Другой пользователь может использовать эту коллаборативную ячейку, например, для расчета распределения фотографий собак и кошек, опубликованных пользователями сети Instagram. Это может быть выполнено путем отправки каждой фотографии в ячейку (например, с использованием уникального адреса ячейки) в качестве входных данных и сбора выходных данных ячейки. Затем эти выходные данные могут быть отправлены в другую ячейку, способную путем суммирования определять общее количество изображений собак и кошек. Благодаря предоставлению доступа к переменной входного изображения и к переменным выходной вероятности как к интерфейсу API, ячейка, настроенная для определения того, соответствует ли входное изображение собаке или кошке, преобразуется в доступный через сеть микросервис, который можно использовать для предоставления соответствующего сервиса от имени других программ и пользователей.

[085] Этот микросервис может выполняться на одном компьютере таким образом, чтобы весь набор фотографий обрабатывался одним экземпляром микросервиса, запущенным на одном компьютере. В качестве альтернативы, несколько экземпляров микросервиса может быть одновременно запущено на нескольких компьютерах таким образом, чтобы фотографии разделялись между несколькими компьютерами и/или экземплярами микросервиса. Параллельная обработка фотографий способна обеспечить более быстрое выполнение задачи. Количество запущенных для одновременного выполнения экземпляров микросервиса на основе ячейки может зависеть, например, от потребности в использовании микросервиса.

[086] На фиг. 7 представлен пример блокнота 700, содержащего ячейку 702 кода, которая может быть использована в качестве микросервиса для формирования случайного целого числа в диапазоне, заданном в качестве входных данных. В строке 710 ячейка 702 кода импортирует модуль «random», представляющий собой модуль для формирования случайных чисел. В строке 712 ячейка 702 кода использует функцию «randint» из модуля «random» для формирования случайного целого числа в диапазоне между значением переменной «low» и значением переменной «high» и сохраняет случайное целое число в переменной «a». Блокнот 700 также содержит ячейку 704, задающую значение 1 для переменой «low» и значение 100 для переменной «high», и ячейку 706, инициирующую отображение значения переменной «a» (в представленном на фиг. 7 примере переменной «a» соответствует значение 45).

[087] Когда ячейка 702 кода сохраняется вместе с ее состоянием в качестве коллаборативной ячейки, значения переменных «high», «low» и «a» сохраняются вместе с кодом из ячейки 702 кода, с модулем «random», функцией «randint» и со всеми переменными, функциями и другой информацией о состоянии, от которой зависит функция «randint». Для использования этой сохраненной коллаборативной ячейки в качестве микросервиса к переменным «low» и «high» может быть предоставлен доступ как к входным данным в интерфейсе API микросервиса, а к переменной «a» может быть предоставлен доступ как к выходным данным микросервиса. С помощью заданного интерфейса API микросервис может использоваться в других программах. В некоторых вариантах осуществления изобретения интерфейс API может представлять собой удаленный или основанный на интернет-технологии интерфейс API (т.е. интерфейс API, доступ к которому осуществляется с использованием методов HTTP, таких как GET или POST), позволяющий использовать коллаборативную ячейку через сеть в качестве микросервиса.

[088] В некоторых вариантах осуществления изобретения интерфейс API микросервиса может быть явным образом задан пользователем, который делает ячейку доступной в качестве микросервиса. В некоторых вариантах осуществления изобретения интерфейс API может быть сформирован автоматически путем предоставления пользователю микросервиса возможности доступа и переопределения значений используемых в ячейке переменных, сохраненных в качестве части состояния коллаборативной ячейки.

[089] Для специалистов в данной области должно быть понятно, что команды для запуска ячейки в качестве микросервиса могут обрабатываться сервером (не показан), который принимает команды через сеть и запускает или выполняет экземпляр микросервиса на основе сохраненной коллаборативной ячейки. Сервер может запускать множество экземпляров микросервиса, по меньшей мере некоторые из которых могут выполняться одновременно. В некоторых вариантах осуществления изобретения экземпляры микросервиса могут запускаться или выполняться на множестве компьютеров. В некоторых вариантах осуществления изобретения количество запущенных сервером для одновременной работы экземпляров микросервиса может зависеть от потребности в микросервисе.

[090] На фиг. 8 представлена блок-схема способа 800 запуска микросервисов на основе ячеек согласно некоторым вариантам осуществления настоящей технологии. В блоке 802 запрос на использование микросервиса на основе ячейки принимается сервером (не показан). В некоторых вариантах осуществления изобретения запрос может содержать уникальный адрес микросервиса на основе ячейки. В некоторых вариантах осуществления изобретения запрос может содержать значения для ввода в микросервис на основе ячейки.

[091] В блоке 804 сервер определяет, запущен ли уже экземпляр микросервиса на основе ячейки и способен ли этот экземпляр обрабатывать полученный запрос. В некоторых вариантах осуществления изобретения это может включать в себя проверку состояния микросервисов на основе ячеек, запущенных на множестве компьютеров.

[092] В блоке 806 сервер запускает новый экземпляр микросервиса на основе ячейки, если в данный момент времени отсутствует запущенный экземпляр запрошенного микросервиса на основе ячейки или если в данный момент времени отсутствует запущенный экземпляр, способный обрабатывать полученный запрос. В некоторых вариантах осуществления изобретения это может выполняться путем запуска исполняющего ядра для того языка программирования, на котором написана ячейка, и последующей загрузки коллаборативной ячейки, на которой основан микросервис на основе ячейки, а также ее сохраненного состояния. В некоторых случаях ядро и микросервис на основе ячейки могут быть запущены в контейнере, таком как контейнер DOCKER. В некоторых вариантах осуществления изобретения ядро и микросервис на основе ячейки могут запускаться на компьютере, отличном от компьютера, на котором работает сервер. Это может выполняться с использованием платформы для оркестровки контейнеризированных приложений, такой как KUBERNETES, или других систем для реализации приложений и управления ими. В некоторых вариантах осуществления изобретения запуск микросервиса на основе ячейки также может включать в себя запуск сервера блокнота для считывания и загрузки коллаборативной ячейки в исполняющее ядро.

[093] В блоке 808 входные данные микросервиса на основе ячейки отправляются микросервису на основе ячейки. В некоторых вариантах осуществления изобретения это может выполняться путем задания значений переменных, используемых в качестве входных данных ячейки, до выполнения ячейки.

[094] В блоке 810 ячейка кода, на которой основан микросервис на основе ячейки, выполняется ядром. Состояние ячейки кода соответствует сохраненному состоянию со всеми переменными, которые были изменены или переопределены с использованием входных данных микросервиса на основе ячейки.

[095] В блоке 812 выходные данные микросервиса на основе ячейки принимаются и отправляются приложению, запросившему использование микросервиса на основе ячейки. В некоторых вариантах осуществления изобретения это может включать в себя считывание значений переменных, содержащих выходные данные микросервиса на основе ячейки.

[096] Должно быть понятно, что несмотря на представление здесь вариантов осуществления изобретения, описанных со ссылкой на конкретные признаки и структуры, без выхода за границы таких технологий могут быть реализованы их различные модификации и сочетания. Соответственно, описание и чертежи следует рассматривать лишь как иллюстрацию обсуждаемых вариантов реализации или осуществления изобретения, принципы которого определенны приложенной формулой изобретения, которая охватывает все модификации, изменения, сочетания или эквивалентные замены в пределах объема настоящего изобретения.

Похожие патенты RU2823453C2

название год авторы номер документа
СИСТЕМА И СПОСОБ ДЛЯ ВИРТУАЛИЗАЦИИ ГРАФИЧЕСКИХ ПОДСИСТЕМ 2005
  • Блит Дэвид Р.
RU2406128C2
КОНТЕЙНЕРНОЕ РАЗВЕРТЫВАНИЕ МИКРОСЕРВИСОВ НА ОСНОВЕ МОНОЛИТНЫХ УНАСЛЕДОВАННЫХ ПРИЛОЖЕНИЙ 2017
  • Ягер, Ян
  • Дюран, Дидье
  • Дитшайд, Пьер-Жан
  • Вуатту, Жан-Люк
RU2733507C1
СИСТЕМЫ И СПОСОБЫ ДЛЯ ЗАЩИТЫ СЕТЕВЫХ УСТРОЙСТВ ПОСРЕДСТВОМ МЕЖСЕТЕВОГО ЭКРАНА 2016
  • Глэйзмэйкерс Курт
  • Селлерье Тома Брюно Эмманюэль
  • Аболафия Натан
  • Бербероглу Гокхан
  • Итурри Айтор Перес
  • Лейно Пер
  • Бодли-Скотт Джейми
RU2714367C1
АППАРАТНАЯ ВИРТУАЛИЗИРОВАННАЯ ИЗОЛЯЦИЯ ДЛЯ ОБЕСПЕЧЕНИЯ БЕЗОПАСНОСТИ 2017
  • Паи Навин Нараян
  • Джеффриз Чарльз Г.
  • Висванатхан Гиридхар
  • Шультц Бенджамин М.
  • Смит Фредерик Дж.
  • Ройтер Ларс
  • Эберсол Майкл Б.
  • Диас Куэльяр Херардо
  • Пашов Иван Димитров
  • Гаддехосур Поорнананда Р.
  • Пулапака Хари Р.
  • Рао Викрам Мангалоре
RU2755880C2
ИНТЕРФЕЙСЫ ДЛЯ ПРИКЛАДНОГО ПРОГРАММИРОВАНИЯ ДЛЯ КУРИРОВАНИЯ КОНТЕНТА 2014
  • Григорович Александр В.
  • Литтл Роберт А.
RU2666302C2
УКАЗАНИЕ, ЗАДАНИЕ И ОБНАРУЖЕНИЕ ПАРАМЕТРОВ ДОКУМЕНТОВ ЭЛЕКТРОННЫХ ТАБЛИЦ 2006
  • Мегиддо Эран
  • Пэриш Дэниел Й.
  • Баттаджин Дэниел
  • Арчер Роберт Л.
  • Гревал Амариндер Сингх
  • Роквуд Джастин Фредерик
  • Бун Шон
RU2421797C2
СИСТЕМА И СПОСОБ АВТОМАТИЧЕСКОЙ ОБРАБОТКИ СИСТЕМНЫХ ОШИБОК ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ 2012
  • Антух Александр Эдуардович
  • Маланов Алексей Владимирович
RU2521265C2
ЗАЩИТА СЕТЕВЫХ УСТРОЙСТВ ПОСРЕДСТВОМ МЕЖСЕТЕВОГО ЭКРАНА 2016
  • Глэйзмэйкерс Курт
  • Алланссон Пер Йохан
  • Селлерье Тома Брюно Эмманюэль
  • Валианос Космас
  • Вебер Том Вилью
RU2712815C1
СИСТЕМЫ И СПОСОБЫ ДЛЯ УПРАВЛЕНИЯ ФАЙЛАМИ ПОСРЕДСТВОМ МОБИЛЬНЫХ ВЫЧИСЛИТЕЛЬНЫХ УСТРОЙСТВ 2013
  • Шигабутдинов Руслан Альбертович
RU2635886C2
ОБНАРУЖЕНИЕ ВРЕДОНОСНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ С ПЕРЕКРЕСТНЫМ ОБЗОРОМ 2015
  • Хант Саймон
  • Менкин Дженнифер
  • Циммерман Джеффри
RU2667052C2

Иллюстрации к изобретению RU 2 823 453 C2

Реферат патента 2024 года СПОСОБ СОВМЕСТНОЙ РАБОТЫ С ИСПОЛЬЗОВАНИЕМ ВЫЧИСЛИТЕЛЬНЫХ БЛОКНОТОВ НА ОСНОВЕ ЯЧЕЕК

Изобретение относится к области вычислительной техники. Технический результат заключается в обеспечении возможности выполнения вычислительных блокнотов на основе ячеек отдельно как микросервисов, имеющих прикладной программный интерфейс для отправки входных данных для коллаборативных ячеек и получения выходных данных от них. Технический результат достигается за счет этапов, на которых выполняется: генерация уникального адреса ячейки, содержащего ее состояние, причем уникальный адрес включает ссылку на ячейку и ее состояние таким образом, что доступ к ячейке и к ее состоянию осуществляется путем перехода по этой ссылке; предоставление доступа к совместной работе с ячейкой второму пользователю, связанному со вторым компьютером, предоставление доступа включает: прием от первого пользователя входных данных, указывающих на то, что ячейка должна использоваться совместно со вторым пользователем; отправку второму пользователю приглашения к совместному использованию ячейки, содержащего уникальный адрес в качестве ссылки на ячейку; в ответ на переход второго пользователя по ссылке со второго компьютера, предоставление второму пользователю доступа к совместной работе с ячейкой на втором компьютере. 2 н. и 25 з.п. ф-лы, 8 ил.

Формула изобретения RU 2 823 453 C2

1. Компьютерный способ совместной работы пользователей с использованием вычислительного блокнота на основе ячеек, доступный с первого компьютера и со второго компьютера, включающий в себя:

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

- исполнение исполняемого кода в ячейке для формирования результата; и

- сохранение на носителе информации состояния ячейки, включающего в себя значения переменных, связанных с исполняемым кодом ячейки и с результатом;

- генерация уникального адреса ячейки, содержащего ее состояние, причем уникальный адрес включает ссылку на ячейку и ее состояние таким образом, что доступ к ячейке и к ее состоянию осуществляется путем перехода по этой ссылке;

- предоставление доступа к совместной работе с ячейкой второму пользователю, связанному со вторым компьютером, предоставление доступа включает:

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

- отправку второму пользователю приглашения к совместному использованию ячейки, содержащего уникальный адрес в качестве ссылки на ячейку;

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

2. Способ по п. 1, отличающийся тем, что состояние ячейки дополнительно включает в себя файлы, к которым выполняется обращение в ячейке.

3. Способ по п. 2, отличающийся тем, что файлы, к которым осуществляется обращение в ячейке, представлены фрагментами файлов, к которым осуществляется обращение в ячейке, и изменениями в этих файлах в результате исполнения исполняемого кода в ячейке.

4. Способ по п. 1, отличающийся тем, что носитель информации содержит хранилище данных, доступное через сеть.

5. Способ по п. 1, отличающийся тем, что исполняемый код в ячейке содержит вызов функции, а состояние ячейки включает в себя код для функции и значения переменных, связанных с функцией.

6. Способ по п. 1, отличающийся тем, что он дополнительно включает в себя считывание состояния ячейки с носителя информации на второй компьютер для воспроизведения ячейки, включая ее состояние, на втором компьютере.

7. Способ по п. 1, отличающийся тем, что уникальный адрес ячейки по меньшей мере частично основан на имени ячейки и на имени пользователя ячейки.

8. Способ по п. 1, отличающийся тем, что состояние ячейки дополнительно включает в себя входные и выходные данные ячейки.

9. Способ по п. 8, отличающийся тем, что входные и выходные данные ячейки выбраны из числа переменных, связанных с ячейкой.

10. Способ по п. 8, отличающийся тем, что он дополнительно включает в себя формирование микросервиса на основе ячейки путем предоставления пользователям микросервиса доступа к входным и выходным данным ячейки.

11. Способ по п. 10, отличающийся тем, что предоставление доступа к входным и выходным данным ячейки включает в себя формирование прикладного программного интерфейса, обеспечивающего доступ к входным и выходным данным ячейки.

12. Способ по п. 11, отличающийся тем, что прикладной программный интерфейс содержит удаленный прикладной программный интерфейс.

13. Способ по п. 11, отличающийся тем, что прикладной программный интерфейс содержит прикладной программный интерфейс на основе интернет-технологии.

14. Способ по п. 10, отличающийся тем, что он дополнительно включает в себя запуск микросервиса на компьютере.

15. Способ по п. 10, отличающийся тем, что он дополнительно включает в себя запуск множества экземпляров микросервиса так, чтобы по меньшей мере некоторые экземпляры микросервиса из множества экземпляров микросервиса выполнялись одновременно.

16. Способ по п. 15, отличающийся тем, что запуск множества экземпляров микросервиса включает в себя запуск множества экземпляров микросервиса на множестве компьютеров.

17. Способ по п. 15, отличающийся тем, что запуск множества экземпляров микросервиса включает в себя запуск множества экземпляров микросервиса в зависимости от потребности в использовании микросервиса.

18. Система для совместной работы пользователей с использованием вычислительного блокнота на основе ячеек, содержащая:

- процессор;

- сетевой интерфейс, связанный с процессором и с сетью;

- носитель информации;

- память, связанную с процессором; и

- сервер, размещенный в памяти, выполняемый процессором, работающий в вычислительном блокноте на основе ячеек, хранящемся на носителе информации, сервер, доступный с первого компьютера и со второго компьютера и содержащий команды, при выполнении которых по крайней мере один процессор производит следующие действия:

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

- исполнение исполняемого кода в ячейке для формирования результата; и

- сохранение на носителе информации состояния ячейки, включающего в себя значения переменных, связанных с исполняемым кодом ячейки и с результатом;

- генерация уникального адреса ячейки, содержащего ее состояние, причем уникальный адрес включает ссылку на ячейку и ее состояние таким образом, что доступ к ячейке и к ее состоянию осуществляется путем перехода по этой ссылке;

- предоставление доступа для совместной работы с ячейкой второму пользователю, связанному со вторым компьютером, предоставление доступа включает:

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

- отправку второму пользователю приглашения к совместному использованию ячейки, содержащего уникальный адрес в качестве ссылки на ячейку;

- в ответ на переход второго пользователя по ссылке со второго компьютера, предоставление второму пользователю доступа к ячейке на втором компьютере.

19. Система по п. 18, отличающаяся тем, что носитель информации связан с сетью и доступен по меньшей мере одному процессору через сетевой интерфейс.

20. Система по п. 18, отличающаяся тем, что состояние ячейки дополнительно включает в себя по меньшей мере фрагменты файлов, к которым выполняется обращение в ячейке.

21. Система по п. 18, отличающаяся тем, что исполняемый код в ячейке содержит вызов функции, а состояние ячейки включает в себя код для функции и значения переменных, связанных с функцией.

22. Система по п. 18, отличающаяся тем, что сервер дополнительно содержит команды, при выполнении которых процессор формирует уникальный адрес ячейки, содержащий ее состояние.

23. Система по п. 22, отличающаяся тем, что сервер дополнительно содержит команды, при выполнении которых процессор отправляет через сетевой интерфейс приглашение к совместному использованию ячейки, содержащее уникальный адрес.

24. Система по п. 18, отличающаяся тем, что сервер дополнительно содержит команды, при выполнении которых процессор формирует микросервис на основе ячейки путем предоставления пользователям микросервиса доступа к входным и выходным данным ячейки.

25. Система по п. 24, отличающаяся тем, что сервер дополнительно содержит команды, при выполнении которых процессор предоставляет доступ к входным и выходным данным ячейки путем формирования прикладного программного интерфейса, обеспечивающего доступ к входным и выходным данным ячейки.

26. Система по п. 25, отличающаяся тем, что прикладной программный интерфейс содержит удаленный прикладной программный интерфейс.

27. Система по п. 24, отличающаяся тем, что сервер дополнительно содержит команды, при выполнении которых процессор запускает микросервис на компьютере.

Документы, цитированные в отчете о поиске Патент 2024 года RU2823453C2

US 20200380001 A1, 03.12.2020
US 20200133638 A1, 30.04.2020
US 20160292067 A1, 06.10.2016
US 20170185612 A1, 29.06.2017
СПОСОБ И СИСТЕМА РАСПРЕДЕЛЕННОГО ХРАНЕНИЯ ВОССТАНАВЛИВАЕМЫХ ДАННЫХ С ОБЕСПЕЧЕНИЕМ ЦЕЛОСТНОСТИ И КОНФИДЕНЦИАЛЬНОСТИ ИНФОРМАЦИИ 2017
  • Самойленко Дмитрий Владимирович
  • Финько Олег Анатольевич
  • Еремеев Михаил Алексеевич
  • Диченко Сергей Александрович
RU2680350C2

RU 2 823 453 C2

Авторы

Трофимов Артем Владимирович

Степанов Всеволод Андреевич

Кураленок Игорь Евгеньевич

Даты

2024-07-23Публикация

2021-10-21Подача