ES2717462T3 - Edición colaborativa - Google Patents

Edición colaborativa Download PDF

Info

Publication number
ES2717462T3
ES2717462T3 ES14712708T ES14712708T ES2717462T3 ES 2717462 T3 ES2717462 T3 ES 2717462T3 ES 14712708 T ES14712708 T ES 14712708T ES 14712708 T ES14712708 T ES 14712708T ES 2717462 T3 ES2717462 T3 ES 2717462T3
Authority
ES
Spain
Prior art keywords
document
pages
page
previews
compiled
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES14712708T
Other languages
English (en)
Inventor
John Hammersley
John Lees-Miller
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
WRITELATEX Ltd
Original Assignee
WRITELATEX Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by WRITELATEX Ltd filed Critical WRITELATEX Ltd
Application granted granted Critical
Publication of ES2717462T3 publication Critical patent/ES2717462T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Description

d e s c r ip c ió n
Edición colaborativa
Campo de la invención
La presente invención se refiere a la creación y edición de documentos, en particular, en línea. Más concretamente, pero no de manera exclusiva, la presente invención se refiere a la edición de documentos en el lenguaje de programación LaTex.
Antecedentes de la invención
LaTex es un lenguaje de programación para la preparación y edición de documentos. Ofrece composición tipográfica coherente y de alta calidad y su uso está extendido en el mundo académico, en particular, en los campos de las matemáticas, física, informática y otras disciplinas técnicas.
El proceso de creación de documentos en LaTex difiere de los procesadores de texto convencionales en que el usuario no edita una representación del documento final, sino que, en su lugar, edita un archivo de código fuente junto, opcionalmente, con archivos de datos adicionales (como, por ejemplo, archivos de texto adicionales y/o archivos de imagen adicionales). El archivo fuente y los archivos de datos adicionales pueden comprenderse como archivos de entrada que se compilan para producir el documento final. En las implementaciones típicas, el documento final se produce en un formato de documento portátil (“pdf”, por sus siglas en inglés) como, por ejemplo, pdf Adobe™.
La compilación se logra por un intérprete LaTex que ejecuta los comandos en el archivo fuente y trae datos de archivos de datos adicionales según se requiera con el fin de producir el documento final. El archivo fuente puede también referirse a paquetes estándares, los cuales son bibliotecas de código fuente que pueden aplicarse a lo largo de múltiples documentos. El intérprete LaTex, los paquetes y muchos tipos de caracteres y programas de soporte se agrupan, normalmente, juntos y se proveen en una distribución LaTex.
El presente enfoque sobre la creación y edición de documentos introduce una separación entre las ediciones aplicadas por el usuario al archivo fuente y su efecto en el documento final. La presente separación se concilia por la etapa de compilación del documento. La separación se gestiona de manera relativamente fácil en circunstancias en las cuales el documento se crea y edita localmente en un ordenador de usuario. En dichas circunstancias, los procesos de almacenamiento, edición y compilación ocurren en el mismo lugar y, por consiguiente, pueden monitorearse de cerca. Sin embargo, el sistema se convierte en más complejo cuando se desea la creación y edición colaborativas de documentos.
En un enfoque básico, la edición colaborativa puede llevarse a cabo simplemente pasando archivos fuente de autor a autor, cada autor realizando, a su vez, ediciones al archivo fuente. Los archivos fuente pueden compartirse por medio de correo electrónico, por ejemplo. Sin embargo, el presente proceso no es ideal, dado que, si múltiples autores desean trabajar en el documento de manera simultánea, puede generarse un número de archivos fuente diferentes que contienen, cada uno, ediciones de un autor individual. Puede ser difícil y complicado conciliar estos en un archivo fuente consolidado que contenga las ediciones presentadas por todos los autores.
Existen soluciones conocidas como “sistemas de control de versión” que pretenden ayudar en la gestión de múltiples versiones de archivos fuente que pueden originarse de esta manera. Sin embargo, estos son relativamente difíciles de establecer, mantener y usar de manera eficaz. Como resultado, se han desarrollado enfoques alternativos. En particular, se ha propuesto que antes que proveer múltiples versiones locales de archivos fuente que se editan de forma separada, los autores deberían acceder a una versión central del archivo fuente y editar esta directamente. De esta manera, las ediciones de todos los autores se consolidan desde el inicio en la copia central de los archivos fuente. Hay, sin embargo, dificultades técnicas en la implementación de este enfoque en una manera que sea fácil de usar.
Dichas dificultades se refieren, en parte, a la etapa de compilación necesaria para los documentos LaTex. De manera específica, mientras el usuario edita el archivo fuente (antes que el documento final), es deseable proveer una vista previa en tiempo real, o casi en tiempo real, de cómo el documento final lucirá durante el proceso de edición. Ello permite a los autores identificar errores o imperfecciones de formateo de forma temprana y asegurar que el documento avanza según lo esperado. Una “vista previa” auténtica de este tipo puede proveerse solo mediante la compilación del documento de manera usual. Ello requiere múltiples compilaciones durante el proceso de edición. Cuando los documentos se gestionan y editan localmente, dichas múltiples compilaciones no son excesivamente pesadas mediante el uso de ordenadores personales convencionales, pero cuando el documento se gestiona y edita de manera remota, cada compilación ocurre en un servidor central y genera un nuevo documento que debe descargarse posteriormente para el autor. Hay presiones resultantes en la carga de procesamiento del servidor y en el ancho de banda de red de la conexión entre el autor y el servidor.
Como resultado de lo descrito más arriba, las soluciones existentes que dependen de la gestión central del código fuente se encuentran limitadas por las capacidades de procesamiento del servidor y el ancho de banda de la conexión de red. Dichas limitaciones se convierten en cada vez más fuertes a medida que más usuarios acceden al servicio. Por lo tanto, será deseable limitar dicha restricción de hardware.
El documento de Mauricio Scheffer: “Compiling LaTex without a local LaTex compíleR’, 28/07/10, http://bugsquash.blogspot.de/2010/07/compiling-latex-without-local-latex.html, y el proyecto de CLSI: “CLSI CompíleRequestFormat", 06/06/10, http://code.google.com/p/common-latex-serviceinterface/wiki/CompileRequestFormat, describen la compilación de un documento LaTex en un ordenador remoto y la evitación de recopilación del documento si el archivo fuente de entrada no ha cambiado.
Compendio de la invención
Según un primer aspecto de la presente invención, se provee un método de previsualización de un documento compilado, que comprende:
transmitir contenido del documento de un dispositivo de cliente a un servidor de compilación a determinados intervalos;
compilar un documento del contenido del documento en el servidor de compilación;
generar y almacenar valores de troceo asociados a cada página del documento compilado;
comparar los valores de troceo generados con valores de troceo previamente almacenados;
producir vistas previas de páginas para páginas individuales del documento compilado;
proveer las vistas previas de páginas al dispositivo de cliente para las páginas asociadas a un valor de troceo generado que no coincide con un valor de troceo previamente almacenado.
La presente invención presenta un método eficaz para la generación de vistas previas de un documento compilado como, por ejemplo, un documento escrito en el lenguaje LaTex. A determinados intervalos, el contenido del documento se provee a un servidor de compilación para la compilación. Los intervalos pueden determinarse según umbrales en términos de tiempo transcurrido de una compilación previa y/o pueden determinarse según el análisis del contenido del documento para su idoneidad para la compilación, o según otros criterios predeterminados o calculados. Después del proceso de compilación, un proceso de troceo se usa para evitar el reenvío innecesario de páginas que se han compilado previamente para el usuario. En particular, las vistas previas de páginas se proveen al dispositivo de cliente solo para las páginas asociadas a un valor de troceo generado que no coincide con un valor de troceo previamente almacenado.
En algunas realizaciones, los valores de troceo se almacenan como los nombres de archivos para vistas previas de páginas que se han producido. Por consiguiente, la etapa de almacenar los valores de troceo para la comparación posterior no necesita ocurrir simultáneamente con la generación de los valores de troceo, sino que puede ocurrir después de que las vistas previas de páginas se hayan producido. Sin embargo, en realizaciones alternativas, los valores pueden, de manera adicional o alternativa, almacenarse en ubicaciones y/o bases de datos separadas. Preferiblemente, las vistas previas de páginas se producen solo para las páginas asociadas a un valor de troceo generado que no coincide con un valor de troceo previamente almacenado. Por consiguiente, las vistas previas de páginas pueden no generarse cuando el valor de troceo para una página coincide con un valor previamente almacenado. Ello evita la carga de procesamiento que se necesita para la producción de vistas previas de páginas duplicadas.
En algunas realizaciones preferidas, la producción de vistas previas de páginas comprende rasterizar páginas en el documento compilado para generar vistas previas de páginas en un formato de imagen de rasterización. Cuando se rasterizan, las vistas previas de páginas son archivos de imagen que pueden reproducirse inmediatamente en un dispositivo de cliente. Mediante archivos de imagen, los archivos de imagen de rasterización que definen una imagen por valores de píxel se prevén, a diferencia del documento originalmente compilado, que se encuentra, con frecuencia, en un formato de vector y que, en particular, comúnmente es un formato de documento portátil (pdf) Adobe. Donde las vistas previas de páginas solo se generan cuando el valor de troceo para dicha página no coincide con una página previamente almacenada, se incurre en una ventaja significativa mediante la evitación de la rasterización innecesaria de vistas previas de páginas.
En realizaciones alternativas, ningún cambio de formato está implícito por la producción de las vistas previas de páginas del documento compilado. Es decir, la etapa de producción de vistas previas de páginas comprende extraer páginas del documento compilado en el mismo formato de archivo que el documento compilado. Por ejemplo, las vistas previas de páginas puede ser archivos pdf de una sola página generados a partir de un documento compilado que es un archivo pdf de múltiples páginas. Sin embargo, las vistas previas de páginas se producen, preferiblemente, solo si la generada que tiene un valor asociado a dicha página no coincide con un valor de troceo previamente almacenado.
En algunas realizaciones adicionales, las vistas previas de páginas pueden producirse en un formato diferente del documento compilado que es un archivo de imagen de no rasterización. Por ejemplo, las vistas previas de páginas pueden producirse en un formato de vector como, por ejemplo, el formato de Gráficos Vectoriales Escalables (svg, por sus siglas en inglés).
Debe comprenderse que las vistas previas de páginas no son necesariamente copias exactas de las páginas dentro del documento compilado. En particular, la reducción del tamaño de archivo de la vista previa de página puede lograrse mediante el submuestreo o la compresión de imágenes u otros elementos dentro de la página durante la producción de la vista previa de página. De manera similar, las vistas previas de páginas pueden no corresponder precisamente a toda una página del documento compilado, pero pueden representar una sección de dicha página, por ejemplo. La reducción del tamaño de las vistas previas de páginas reduce el uso de ancho de banda al devolver las vistas previas al dispositivo de cliente. Las etapas para reducir el tamaño de archivo pueden tomarse según un análisis del tamaño de archivo pronosticado de la vista previa de página.
Preferiblemente, los intervalos determinados se calculan de modo que sean al menos iguales a un primer período predeterminado calculado a partir de un tiempo en el cual una compilación más reciente ha tenido lugar. De esta manera, un espacio vacío mínimo entre compilaciones se ejecuta para evitar la excesiva actualización del documento compilado y/o vistas previas de páginas. Ello además reduce la carga de procesamiento en el sistema. Además, los intervalos determinados se calculan para que expiren después de un segundo período predeterminado desde el momento en el cual la acción de usuario más reciente ha tenido lugar. Al asegurar que la compilación no tiene lugar cuando el usuario está en el medio de una actividad extendida, la cantidad de errores de compilación puede reducirse y, además, las vistas previas de páginas se producen en momentos en los que el usuario probablemente pueda verlas.
En algunas realizaciones preferidas, los intervalos determinados se calculan según un proceso de precompilación que evalúa la idoneidad del contenido del documento para la compilación. Por ejemplo, el proceso de precompilación puede comprender una comprobación de sintaxis u otro análisis que pueda identificar las razones por las cuales una compilación fallará sin atravesar el propio proceso de compilación. Ello reduce el procesamiento innecesario en procesos de compilación fallidos y reduce, por consiguiente, aún más la carga en el sistema.
También puede apreciarse que la invención puede implementarse mediante el uso de un código de programa de ordenador. De hecho, según aspectos adicionales de la presente invención, se provee, por lo tanto, un producto de programa de ordenador que comprende instrucciones ejecutables por ordenador para llevar a cabo el método del primer o segundo aspectos. El producto de programa de ordenador puede ser un medio de almacenamiento físico como, por ejemplo, un chip de Memoria de Solo Lectura (ROM, por sus siglas en inglés). De manera alternativa, puede ser un disco como, por ejemplo, un Disco Versátil Digital (Dv D-ROM) o Dísco Compacto (CD-ROM, por sus siglas en inglés). También puede ser una señal como, por ejemplo, una señal electrónica en cables, una señal óptica o una señal radioeléctrica como, por ejemplo, a un satélite o similares. La invención también se extiende a un procesador que ejecuta el software o código, p.ej., un ordenador o un sistema de ordenador configurado para llevar a cabo el método descrito más arriba.
Breve descripción de Ios dibujos
Ahora se describirá una realización preferida de la presente invención con referencia a los dibujos anexos, en los cuales:
La Figura 1 muestra un sistema para proveer vistas previas de un documento compilado; y
la Figura 2 ilustra un diagrama de flujo de un método para usar valores de troceo para evitar la repetición innecesaria de vistas previas de páginas previamente provistas.
Descripción detallada
Con referencia a la Figura 1, se provee un sistema para la edición colaborativa de documentos. En particular, el sistema se dispone para la edición de documentos LaTex, aunque en otras realizaciones también pueden proveerse lenguajes de marcado alternativos (como, por ejemplo, Markdown, Textile y ReStructuredText).
El sistema comprende un dispositivo de cliente 10 y múltiples servidores 20 conectados mediante una red. La red es, preferiblemente, Internet, aunque otras redes pueden usarse. De hecho, las comunicaciones entre diferentes aspectos del sistema pueden llevarse a cabo a través de diferentes redes, si correspondiera.
El dispositivo de cliente se opera por un usuario y es, normalmente, un ordenador personal. Dispositivos de ordenador conectados en red alternativos como, por ejemplo, teléfonos móviles o tabletas, pueden también usarse como el dispositivo cliente por el usuario. En la Figura 1, solo un dispositivo de cliente único 10 operado por un usuario único se muestra, pero se comprenderá que múltiples dispositivos de cliente operados por múltiples usuarios se proveerán normalmente. Ello permite a múltiples usuarios acceder al sistema para editar el mismo documento al mismo tiempo.
El dispositivo de cliente usa un sistema operativo convencional y ejecuta un navegador a través del cual las comunicaciones con los servidores 20 pueden establecerse. Una aplicación de navegador que comprende múltiples componentes se provee para la edición de documentos. Los componentes comprenden un editor colaborativo 12, un componente de gestión de archivo de entrada 14 y un componente de vista previa en tiempo real 16. El editor colaborativo permite al usuario ingresar ediciones al código fuente de un documento, el componente de gestión de archivo de entrada permite al usuario proveer archivos de datos adicionales para el documento y el componente de vista previa en tiempo real puede usarse para mostrar vistas previas del documento compilado al usuario.
Los servidores comprenden servidores web 22, servidores de reproducción 24, servidores de archivo 26 y servidores de base de datos 28. Cada servidor puede implementarse por un servidor de ordenador convencional o puede distribuirse entre servidores de ordenador. En el presente contexto, un servidor de ordenador es cualquier dispositivo informático que pueda actuar para servir datos al dispositivo de cliente 10. Se comprenderá que las distinciones entre los servidores 20 que se muestran en la Figura 1 son distinciones lógicas y pueden no corresponder directamente a los recursos físicos usados para implementar los servidores 20. Por ejemplo, un servidor único puede distribuirse entre múltiples dispositivos y, por el contrario, múltiples servidores 20 pueden implementarse en un único dispositivo informático, según corresponda.
Los servidores web 22 proveen la aplicación de navegador al dispositivo de cliente 20 y gestionan el código fuente del documento. Los servidores web 22 se disponen para recibir ediciones al código fuente del editor colaborativo 12. Los servidores web 22 pueden también recibir archivos de imagen adicionales y otros archivos para su incorporación al documento desde el componente de gestión de archivo de entrada 24. Los servidores web también se adaptan para proveer direcciones de red (como, por ejemplo, Localizadores de Recursos Uniformes (URL, por sus siglas en inglés)) para vistas previas de páginas del documento compilado al componente de vista previa en tiempo real 26. Ello permite al componente de vista previa en tiempo real 26 acceder a vistas previas de páginas cuando se crean. Los servidores de reproducción 24 se acoplan, de manera comunicativa, a los servidores web 22 y a los servidores de archivo 26. Los servidores de reproducción actúan para recibir el código fuente de los servidores web 22 y compilan el documento a partir de dicho código fuente antes de generar vistas previas de cada página del documento. Los fallos en la compilación del documento se informan a los servidores web 22 como errores en el código fuente, los cuales pueden informarse al dispositivo de cliente 20. Los servidores de reproducción 24 también devuelven información de dirección para vistas previas de páginas generadas que pueden pasar al componente de vista previa en tiempo real 26 y, de esta manera, permitir al dispositivo de cliente 20 acceder a las vistas previas de páginas.
Los servidores de reproducción 24 pueden incluir archivos de imagen y otros datos adicionales en la compilación del documento. Estos se reciben del componente de gestión de archivos de entrada 24 por los servidores web 22, pero pueden almacenarse en otro lugar como, por ejemplo, en los servidores de archivos 26. En el presente caso, los servidores web 22 no proveen los archivos de imagen y otros archivos de datos a los servidores de reproducción 24 directamente, sino que, en su lugar, proveen enlaces a la ubicación dentro de los servidores de archivos 26 en los cuales dichos datos se almacenan. Los servidores de reproducción 24 pueden entonces recuperar dichos datos de los servidores de archivos 26 según sea necesario para la compilación del documento.
Los servidores web 22 se disponen para proveer el documento compilado y las vistas previas de páginas a los servidores de archivos 26. Los servidores de archivos 26 se disponen para proveer las vistas previas de páginas al componente de vista previa en tiempo real 16 como y cuando se soliciten.
Los servidores de bases de datos 28 se usan para almacenar datos para su uso posterior por los servidores web 22. Por ejemplo, los servidores de bases de datos 28 almacenan el código fuente que no se está editando actualmente y otros datos útiles para la gestión del sistema. Por ejemplo, los servidores de bases de datos 28 pueden almacenar detalles de cuenta de usuario, las relaciones entre usuarios y documentos, mensajes de error de los servidores de compilación y los URL de vistas previas de páginas.
Durante el funcionamiento, el usuario del dispositivo de cliente 10 carga el navegador en el dispositivo de cliente y accede a una página web desde los servidores web 22. Los servidores web devuelven la solicitud de edición colaborativa. El usuario puede acceder al código fuente de un documento que desea editar de los servidores web 22 a través del editor colaborativo 12. En la práctica, puede haber una pantalla de inicio de sesión, donde se invita al usuario a que provea detalles de nombre de usuario y contraseña. Ello provee seguridad para los documentos y también permite, de manera fácil, que los servidores 20 identifiquen documentos asociados al usuario.
En realizaciones preferidas, tanto el código fuente como una vista previa del documento compilado se proveen al usuario para la visualización simultánea en el dispositivo de cliente. Para lograr esto, los servidores web 22 proveen los URL de las vistas previas de página del documento al dispositivo de cliente 10. El usuario entonces procede a realizar cambios en el documento mediante el uso del editor colaborativo.
Mientras el usuario edita el documento, las vistas previas de páginas que se han provisto se convierten en obsoletas. Es, por lo tanto, deseable, actualizar las vistas previas de páginas mientras la edición ocurre con el fin de proveer una vista previa actual al usuario. En un ejemplo, las vistas previas actualizadas pueden generarse después de cada pulsación de tecla provista por el usuario. Sin embargo, ello requerirá que el documento se compile en cada pulsación de tecla, lo cual usará una gran cantidad de recursos de servidor. Además, muchas de dichas compilaciones fallarán debido a una sintaxis incompleta en el código fuente, y una proporción incluso mayor no será de beneficio al usuario dado que representará oraciones semánticas incompletas.
La realización preferida, por lo tanto, elige, de manera selectiva, cuándo una recopilación del código fuente se llevará a cabo. Preferiblemente, el sistema se dispone de modo que una nueva compilación solo ocurrirá cuando un primer período predeterminado (como, por ejemplo, cuatro segundos) de la compilación completa previa haya tenido lugar.
Una comprobación adicional que se añade, preferiblemente, a la descrita más arriba es que la compilación solo ocurrirá después de una falta de actividad del usuario durante un segundo período predeterminado (como, por ejemplo, medio segundo). La actividad del usuario puede medirse por pulsaciones de tecla, por ejemplo, o puede, de manera adicional o alternativa, incluir otras entradas como, por ejemplo, movimiento de cursor. De esta manera, las compilaciones no se ejecutan mientras el usuario está en el proceso de ingresar ediciones al código fuente.
Una comprobación adicional para uno o ambos de lo descrito más arriba es un proceso de precompilación durante el cual la calidad sintáctica del código fuente se comprueba para rechazar un código fuente que no se compilará. Dicho proceso de precompilación puede analizar la sintaxis del código fuente, pero, en realidad, no la compila. El proceso de precompilación puede considerarse una “comprobación de sanidad” que evita intentos de compilar códigos fuente que están claramente incompletos. El proceso de precompilación puede diseñarse de modo que se permite que el código fuente válido siempre proceda a la compilación, mientras que el proceso de precompilación puede fallar en la identificación de todos los códigos fuente inválidos.
El proceso de precompilación puede llevarse a cabo por los servidores web 22 o puede, de manera adicional o alternativa, comprender elementos implementados por el dispositivo de cliente 10. Por ejemplo, existen ciertas herramientas que pueden analizar aspectos del código fuente dentro del navegador. Uno de dichos ejemplos es la herramienta MathJAX que se conoce en la técnica. Los resultados de dichos componentes no son necesariamente aplicables directamente al proceso de compilación, pero pueden usarse para informar el proceso de precompilación para decidir si una compilación es apropiada.
Cuando se inicia una compilación, se inicia un proceso para generar vistas previas de cada página del documento compilado. Ello puede comprenderse con referencia a la Figura 2.
Las ediciones al documento se proveen a los servidores web 22 del dispositivo de cliente 10. Los servidores web 22 consolidan las ediciones con el código fuente original para proveer el código fuente editado a los servidores de reproducción 24. Dicho código fuente se usa para compilar el documento en la etapa el. El resultado es un documento pdf, en la etapa e2. En particular, en realizaciones preferidas, el documento compilado es un documento pdf Adobe. Sin embargo, en otras realizaciones, el documento compilado puede ser en un formato alternativo como, por ejemplo, un formato de archivo Independiente del Dispositivo (DVI, por sus siglas en inglés). Las etapas subsiguientes del método pueden aplicarse igualmente independientemente del formato del documento compilado. En la etapa e3, el documento pdf se analiza para generar uno o más valores de troceo para cada página del documento pdf. Valores de troceo adicionales pueden también crearse para los atributos universales del documento, por ejemplo, los valores de troceo para las páginas pueden comprender valores basados en el contenido pdf en bruto para las páginas y valores de troceo basados en otros aspectos como, por ejemplo, “XObjetos” dentro de la página. Es valioso proveer un valor de troceo para atributos universales seleccionados, así como para cada página, dado que ello puede reflejar un cambio en los atributos universales que puede alterar la apariencia de una página incluso si los datos en bruto para dicha página permanecen sin cambios. Por ejemplo, un atributo universal puede permitir o inhabilitar hiperenlaces dentro del texto. Si dicho atributo universal ha cambiado, entonces puede suponerse que todas las páginas han cambiado y la posterior verificación para cada página puede no requerirse. Los valores de troceo se almacenan en la etapa e4, y los valores de troceo para cada página se comparan entonces con valores de troceo previamente almacenados en la etapa e5, para identificar qué páginas han cambiado desde la última compilación. Los valores de troceo de las páginas que han cambiado se identifican en la etapa e6, y las vistas previas de páginas individuales para dichas páginas se producen a partir del pdf del documento en la etapa e7. Dichas vistas previas de páginas se cargan a los servidores de archivo 26 en la etapa e8, desde donde puede accederse a aquellas más tarde por el dispositivo de cliente 10.
La etapa de producir las vistas previas de páginas puede comprender la rasterización de las páginas seleccionadas del documento compilado para generar archivos de imagen de rasterización. El proceso de rasterización de las páginas para producir archivos de imagen (como, por ejemplo, archivos .jpeg) permite al navegador en el dispositivo de cliente reproducir inmediatamente las vistas previas de páginas dado que están en un formato que se maneja fácilmente por el navegador. En otras realizaciones, puede permitirse al navegador que reproduzca archivos pdf directamente y la producción de las vistas previas de páginas puede comprender extraer las páginas relevantes del documento compilado sin la rasterización para cambiar el formato de archivo. Durante la extracción de este tipo, puede ocurrir un procesamiento adicional, si se desea, para reducir el tamaño de las imágenes incorporadas, por ejemplo. Sin embargo, esta capacidad de reproducir directamente archivos pdf no se encuentra disponible en muchos navegadores y puede crear problemas de seguridad debido a la potencial entrega de javascript mediante archivos pdf. En algunas circunstancias puede, sin embargo, ser deseable entregar las páginas cambiadas al usuario como archivos pdf dado que estos están, normalmente, más comprimidos que los archivos de imagen para documentos basados sustancialmente en texto.
Las vistas previas de páginas se almacenan en los servidores de archivos 26 mediante el uso del valor de troceo como el nombre de archivo, para permitir la fácil comparación durante las iteraciones subsiguientes de la etapa e5. La información de dirección (como, por ejemplo, un URL) para cada vista previa de página se devuelve al componente de vista previa en tiempo real 16 mediante los servidores web 22. El componente de vista previa en tiempo real puede entonces solicitar las vistas previas de páginas actualizadas de los servidores de reproducción 22 mediante el uso de la información de dirección, y dichas páginas se entregan al dispositivo de cliente lo en la etapa elO.
El proceso descrito más arriba asegura que las vistas previas de páginas solo se creen y/o entreguen al dispositivo de cliente 10 para las páginas que han cambiado. Ello garantiza que no se requiera un uso de ancho de banda innecesario para enviar páginas sin cambio otra vez al dispositivo de cliente lo para la vista previa y también asegura que no se incurra en una carga de procesamiento innecesaria al producir vistas previas de páginas para dichas páginas.
Existe un número de características preferidas de la implementación del método que ofrecen ventajas. Por ejemplo, con el fin de garantizar que cualquier riesgo de seguridad presentado por el requisito de compilar y ejecutar el código fuente de usuarios no conocidos se mitiga, el proceso de compilación en los servidores de reproducción se lleva a cabo en un entorno de recinto arena de modo que el proceso de compilación no puede escribir a archivos fuera de su propio directorio de trabajo. Además, el proceso de reproducción ocurre en una “prisión de cambio de raíz” (prisión de cambio de raíz) mediante el uso de una cuenta en los servidores con mínimos privilegios. Por consiguiente, la compilación ocurre en un sistema de archivos dedicado, lógicamente separado del sistema de archivos principal del servidor por el sistema operativo (Linux en la realización preferida). Escapar de esta limitación requerirá un fallo en el propio sistema operativo.
Además de lo descrito más arriba, se provee seguridad por la arquitectura del sistema. Los servidores de reproducción 24 no hacen nada más aparte de compilar documentos y no tienen acceso privilegiado a los servidores web 22. Por consiguiente, el compromiso de un servidor de reproducción no implica el compromiso de la propia aplicación web.
El rendimiento mejorado se logra por la introducción de varios procesos de caché en los servidores de reproducción 24. Por ejemplo, una “caché de entrada” puede proveerse para almacenar archivos de entrada (a saber, archivos de datos adicionales que se originan a partir del componente de gestión de archivos de entrada 14) de modo que no tienen que recuperarse de los servidores web 22 en cada ocasión en la que se requiere la compilación. Además, una caché de página puede proveerse en cada servidor de reproducción 24 que mantiene un registro de los troceos de vistas previas de páginas previamente almacenadas. De esta manera, no siempre es necesario contactar los servidores de archivos para establecer si una página se ha almacenado previamente. También puede proveerse una caché de salida que contiene documentos previamente compilados. Es posible que incluso cuando las ediciones han ocurrido en el código fuente, el documento compilado no sufra cambios (por ejemplo, si las ediciones consisten en comentarios dentro del código fuente). Una caché de salida puede contener valores para documentos previamente compilados, de modo que cuando no ha habido cambios, no es necesario cargar el documento compilado otra vez o analizar los cambios en las páginas individuales.
Con el fin de hacer el mejor uso de los procesos de caché descritos más arriba, se prefiere que un documento dado se compile siempre por el mismo servidor de reproducción 24. Por consiguiente, puede asignarse a los documentos un servidor de reproducción 24 preferido que se usará para la compilación de dicho documento, suponiendo que el servidor de reproducción 24 esté disponible. Si el servidor de reproducción 24 asignado como preferido para un documento dado está ocupado, puede realizarse una evaluación sobre si esperar a que esté disponible o compilar el documento en otro servidor de reproducción. Dicha evaluación puede llevarse a cabo según factores como, por ejemplo, la longitud de fila de espera en el servidor de reproducción preferido y la ventaja percibida de los procesos de caché, por ejemplo.
También puede haber un proceso en curso para eliminar páginas obsoletas de los servidores 20. Por ejemplo, cuando se descubre que cierto troceo ya no aparece para las páginas del documento compilado, el archivo de imagen almacenado para dicha página puede eliminarse.
Otras variaciones y modificaciones serán aparentes para la persona con experiencia en la técnica. Dichas variaciones y modificaciones pueden implicar características equivalentes y otras características que ya se conocen y que pueden usarse en lugar de, o además de, las características descritas en la presente memoria. Las características que se describen en el contexto de realizaciones separadas pueden proveerse en combinación en una sola realización. A la inversa, las características que se describen en el contexto de una sola realización pueden también proveerse de manera separada o en cualquier subcombinación adecuada.
Debe notarse que el término “que comprende(n)” no excluye otros elementos o etapas, el término “un” o “una/uno” no excluye una pluralidad, una sola característica puede satisfacer las funciones de varias características incluidas en las reivindicaciones y los signos de referencia en las reivindicaciones no se interpretarán como restrictivos del alcance de las reivindicaciones. También debe notarse que las Figuras no son necesariamente a escala; en su lugar, se ha colocado énfasis, en general, al ilustrar los principios de la presente invención.

Claims (9)

r e iv in d ic a c io n e s
1. Un método implementado por ordenador para la previsualización de un documento compilado, que comprende: transmitir contenido del documento de un dispositivo de cliente (10) a un servidor de compilación (24) a intervalos determinados; y
compilar (E l) un documento del contenido del documento en el servidor de compilación; el método caracterizado por que:
genera (E3) y almacena valores de troceo asociados a cada página del documento compilado; compara (E5) Ios valores de troceo generados con valores de troceo previamente almacenados; produce (E7) vistas previas de páginas para páginas individuales del documento compilado; y
provee (E10) las vistas previas de páginas al dispositivo de cliente para las páginas asociadas a un valor de troceo generado que no coincide con un valor de troceo previamente almacenado.
2. Un método según cualquiera de las reivindicaciones precedentes, en donde las vistas previas de páginas se producen (E7) para las páginas asociadas a un valor de troceo generado que no coincide con un valor de troceo previamente almacenado.
3. Un método según cualquiera de las reivindicaciones precedentes, en donde la etapa de producir (E7) vistas previas de páginas comprende la rasterización de páginas en el documento compilado para generar vistas previas de páginas en un formato de imagen de rasterización.
4. Un método según cualquiera de las reivindicaciones precedentes, en donde la etapa de producir (E7) vistas previas de páginas comprende extraer páginas del documento compilado en el mismo formato de archivo que el documento compilado.
5. Un método según cualquiera de las reivindicaciones precedentes, en donde el documento compilado está en un formato de documento portátil.
6. Un método según cualquiera de las reivindicaciones precedentes, en donde Ios intervalos determinados se calculan de modo que sean al menos iguales a un primer período predeterminado calculado a partir de un tiempo en el cual una compilación más reciente ha tenido lugar.
7. Un método según cualquiera de las reivindicaciones precedentes, en donde el intervalo determinado se calcula para que expire después de un segundo período predeterminado a partir de que una acción de usuario más reciente haya tenido lugar.
8. Un método según cualquiera de las reivindicaciones precedentes, en donde Ios intervalos determinados se calculan según un proceso de precompilación que evalúa la idoneidad del contenido del documento para la compilación.
9. Un medio legible por ordenador que comprende instrucciones ejecutables por ordenador para llevar a cabo el método de cualquiera de las reivindicaciones precedentes.
ES14712708T 2013-03-11 2014-03-10 Edición colaborativa Active ES2717462T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/792,660 US9729672B2 (en) 2013-03-11 2013-03-11 Collaborative editing
PCT/GB2014/050707 WO2014140548A2 (en) 2013-03-11 2014-03-10 Collaborative editing

Publications (1)

Publication Number Publication Date
ES2717462T3 true ES2717462T3 (es) 2019-06-21

Family

ID=50382474

Family Applications (1)

Application Number Title Priority Date Filing Date
ES14712708T Active ES2717462T3 (es) 2013-03-11 2014-03-10 Edición colaborativa

Country Status (5)

Country Link
US (1) US9729672B2 (es)
EP (1) EP2972827B1 (es)
DK (1) DK2972827T3 (es)
ES (1) ES2717462T3 (es)
WO (1) WO2014140548A2 (es)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9412187B2 (en) * 2013-12-20 2016-08-09 Documill Oy Delayed rendering of content
US9749202B1 (en) * 2014-02-13 2017-08-29 Amazon Technologies, Inc. Remote session preview management
CN106874173B (zh) * 2015-12-10 2020-07-24 阿里巴巴集团控股有限公司 页面模板的测试方法和装置
CN110602093B (zh) * 2019-09-12 2021-04-30 腾讯科技(深圳)有限公司 一种数据处理方法、装置以及计算机可读存储介质
EP4099646A4 (en) * 2020-04-30 2023-07-26 Beijing Bytedance Network Technology Co., Ltd. METHOD AND DEVICE FOR EXCHANGE OF INFORMATION, ELECTRONIC DEVICE AND RECORDING MEDIUM
WO2021218944A1 (zh) * 2020-04-30 2021-11-04 北京字节跳动网络技术有限公司 信息交互方法、装置、设备及介质
CN113705177A (zh) * 2021-08-23 2021-11-26 风变科技(深圳)有限公司 基于集成写稿环境的稿件录入方法、装置和计算机设备
US20230394221A1 (en) * 2022-06-06 2023-12-07 Microsoft Technology Licensing, Llc Converting a portable document format to a latex format

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7277925B2 (en) * 1999-12-08 2007-10-02 Warnock Kevin L Internet document services
US20060174199A1 (en) * 2000-11-16 2006-08-03 Soltis Warren B Web-based design system
US7418661B2 (en) * 2002-09-17 2008-08-26 Hewlett-Packard Development Company, L.P. Published web page version tracking
EP2136324A3 (en) * 2003-07-08 2011-01-05 US Lynx LLC An automated publishing system that facilitates collaborative editing and accountability through virtual document architecture
US20060143562A1 (en) * 2004-12-29 2006-06-29 Andreas Seurig Self-describing editors for browser-based WYSIWYG XML/HTML editors
US9594731B2 (en) * 2007-06-29 2017-03-14 Microsoft Technology Licensing, Llc WYSIWYG, browser-based XML editor
US8108686B2 (en) * 2008-09-18 2012-01-31 Oracle America, Inc. Method and system for detecting modified pages
US8286077B2 (en) * 2009-12-03 2012-10-09 Microsoft Corporation Remote batch editing of formatted text via an HTML editor
US20110252312A1 (en) * 2010-04-12 2011-10-13 Google Inc. Real-Time Collaboration in a Hosted Word Processor
US20120192064A1 (en) * 2011-01-21 2012-07-26 Oudi Antebi Distributed document processing and management
US20130283147A1 (en) * 2012-04-19 2013-10-24 Sharon Wong Web-based collaborative document review system

Also Published As

Publication number Publication date
US9729672B2 (en) 2017-08-08
DK2972827T3 (en) 2019-04-15
WO2014140548A3 (en) 2014-11-27
WO2014140548A2 (en) 2014-09-18
EP2972827B1 (en) 2019-02-27
EP2972827A2 (en) 2016-01-20
US20140258371A1 (en) 2014-09-11

Similar Documents

Publication Publication Date Title
ES2717462T3 (es) Edición colaborativa
CN111475757B (zh) 页面更新方法和装置
KR101824222B1 (ko) 동적 컨텐츠 및 스테일 컨텐츠를 포함하는 웹사이트들의 고속 렌더링
JP5911304B2 (ja) ウェブ上の文書を閲覧するためのフォントの取扱い
US8769405B2 (en) Reduced glyph font files
US9275018B2 (en) Techniques for analyzing web pages to determine font subsets
US8631394B2 (en) Static resource processing
US20080320387A1 (en) Information displaying device and information displaying method
US20110115797A1 (en) Dynamic Streaming of Font Subsets
US20140136957A1 (en) Supporting Scalable Fonts
US20120066590A1 (en) Systems and Methods for Enhanced Font Management
CN106790687A (zh) 网页呈现方法、网页数据处理方法和服务器
US20190073342A1 (en) Presentation of electronic information
US20160182606A1 (en) Network Based Static Font Subset Management
JP2014029701A (ja) モバイル装置のための文書処理
WO2022062888A1 (zh) 一种文档编辑方法、装置、计算机设备和存储介质
US11562037B2 (en) Crawlability of single page applications
CN105589959A (zh) 表单处理方法和表单系统
US20030233352A1 (en) Method and apparatus for screening media
Schubotz et al. Mathoid: Robust, scalable, fast and accessible math rendering for wikipedia
CN102193789B (zh) 一种实现可配置跳转链接的方法和设备
JP2018106556A (ja) 画面情報生成装置、画面情報生成方法、及びプログラム
CN104956360A (zh) 利用数据uri增强的渐进图像呈现
CN115080154A (zh) 页面显示方法、装置、存储介质及电子设备
KR101574893B1 (ko) 비휘발성 메모리를 이용한 웹 페이지의 레이아웃 캐싱 장치 및 방법